improve ergonomics of custom drivers and add a counter example to rink

This commit is contained in:
Evan Almloff committed 2023-03-13 21:26:44 -05:00
1 parent b255800511
commit ae1300b015
8 files changed
+338 -364

No files matched your search

+48
View File
@@ -62,6 +62,24 @@ pub struct OwnedAttributeDiscription {
pub namespace: Option<String>,
}
impl From<String> for OwnedAttributeDiscription {
fn from(name: String) -> Self {
Self {
name,
namespace: None,
}
}
}
impl<S: Into<String>, N: Into<String>> From<(S, N)> for OwnedAttributeDiscription {
fn from(name: (S, N)) -> Self {
Self {
name: name.0.into(),
namespace: Some(name.1.into()),
}
}
}
/// An attribute on a DOM node, such as `id="my-thing"` or
/// `href="https://example.com"`.
#[derive(Clone, Copy, Debug)]
@@ -88,6 +106,36 @@ pub enum OwnedAttributeValue<V: FromAnyValue = ()> {
Custom(V),
}
impl From<String> for OwnedAttributeValue {
fn from(value: String) -> Self {
Self::Text(value)
}
}
impl From<f64> for OwnedAttributeValue {
fn from(value: f64) -> Self {
Self::Float(value)
}
}
impl From<i64> for OwnedAttributeValue {
fn from(value: i64) -> Self {
Self::Int(value)
}
}
impl From<bool> for OwnedAttributeValue {
fn from(value: bool) -> Self {
Self::Bool(value)
}
}
impl<V: FromAnyValue> From<V> for OwnedAttributeValue<V> {
fn from(value: V) -> Self {
Self::Custom(value)
}
}
/// Something that can be converted from a borrowed [Any] value.
pub trait FromAnyValue: Clone + 'static {
/// Convert from an [Any] value.