blob: dfc4b5c3257c150f94a72814cc9bb189b0a8744f [file] [log] [blame]
/*
* Copyright 2024 Google LLC.
*
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#ifndef SkRustSpanUtils_DEFINED
#define SkRustSpanUtils_DEFINED
#include "include/core/SkSpan.h"
// TODO(https://crbug.com/356698922): Use a real `#include` if possible.
namespace rust {
inline namespace cxxbridge1 {
template <typename T> class Slice;
} // namespace cxxbridge1
} // namespace rust
template <typename T> SkSpan<T> ToSkSpan(rust::Slice<T> slice) {
// Avoiding operating on `buffer.data()` if the slice is empty helps to avoid
// UB risk described at https://davidben.net/2024/01/15/empty-slices.html.
if (slice.empty()) {
return SkSpan<T>();
}
return SkSpan<T>(slice.data(), slice.size());
}
#endif // SkRustSpanUtils_DEFINED