Merge pull request #1055 from Demonthos/fix-hot-reload-svg

Fix hot reloading with namespaces
This commit is contained in:
Jon Kelley 2023-06-01 21:21:56 +02:00 committed by GitHub
commit 9390820f36
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -284,6 +284,17 @@ where
Ok(&*Box::leak(deserialized))
}
#[cfg(feature = "serialize")]
fn deserialize_option_leaky<'a, 'de, D>(deserializer: D) -> Result<Option<&'static str>, D::Error>
where
D: serde::Deserializer<'de>,
{
use serde::Deserialize;
let deserialized = Option::<String>::deserialize(deserializer)?;
Ok(deserialized.map(|deserialized| &*Box::leak(deserialized.into_boxed_str())))
}
impl<'a> Template<'a> {
/// Is this template worth caching at all, since it's completely runtime?
///
@ -319,6 +330,10 @@ pub enum TemplateNode<'a> {
///
/// In HTML, this would be a valid URI that defines a namespace for all elements below it
/// SVG is an example of this namespace
#[cfg_attr(
feature = "serialize",
serde(deserialize_with = "deserialize_option_leaky")
)]
namespace: Option<&'a str>,
/// A list of possibly dynamic attribues for this element