summaryrefslogtreecommitdiffstats
path: root/native/src/svg.rs
diff options
context:
space:
mode:
Diffstat (limited to 'native/src/svg.rs')
-rw-r--r--native/src/svg.rs12
1 files changed, 10 insertions, 2 deletions
diff --git a/native/src/svg.rs b/native/src/svg.rs
index f86fec5b..c89eed3f 100644
--- a/native/src/svg.rs
+++ b/native/src/svg.rs
@@ -1,6 +1,7 @@
//! Load and draw vector graphics.
use crate::{Hasher, Rectangle};
+use std::borrow::Cow;
use std::hash::{Hash, Hasher as _};
use std::path::PathBuf;
use std::sync::Arc;
@@ -25,7 +26,14 @@ impl Handle {
/// This is useful if you already have your SVG data in-memory, maybe
/// because you downloaded or generated it procedurally.
pub fn from_memory(bytes: impl Into<Vec<u8>>) -> Handle {
- Self::from_data(Data::Bytes(bytes.into()))
+ Self::from_data(Data::Bytes(Cow::Owned(bytes.into())))
+ }
+
+ /// Like [`Handle::from_memory`], but from static image data.
+ ///
+ /// Useful for images included in binary, for instance with [`include_bytes!`].
+ pub fn from_static_memory(bytes: &'static [u8]) -> Handle {
+ Self::from_data(Data::Bytes(Cow::Borrowed(bytes)))
}
fn from_data(data: Data) -> Handle {
@@ -64,7 +72,7 @@ pub enum Data {
/// In-memory data
///
/// Can contain an SVG string or a gzip compressed data.
- Bytes(Vec<u8>),
+ Bytes(Cow<'static, [u8]>),
}
impl std::fmt::Debug for Data {