Generic Valueness for refs
This commit is contained in:
parent
7225960363
commit
a33f96bc1d
|
@ -87,7 +87,7 @@ pub fn value<D: Domain, V: Value<D>>(v: &V) -> &dyn Value<D> {
|
|||
v
|
||||
}
|
||||
|
||||
impl<'a, D: Domain> Value<D> for &'a dyn Value<D> {
|
||||
impl<'a, D: Domain, V: Value<D> + ?Sized> Value<D> for &'a V {
|
||||
fn value_class(&self) -> ValueClass { (*self).value_class() }
|
||||
fn as_boolean(&self) -> Option<bool> { (*self).as_boolean() }
|
||||
fn as_float(&self) -> Option<f32> { (*self).as_float() }
|
||||
|
@ -301,7 +301,7 @@ impl<D: Domain> Value<D> for Float {
|
|||
fn as_double(&self) -> Option<f64> { Some(self.0 as f64) }
|
||||
}
|
||||
|
||||
impl<'a, D: Domain> Value<D> for &'a str {
|
||||
impl<D: Domain> Value<D> for str {
|
||||
fn value_class(&self) -> ValueClass { ValueClass::Atomic(AtomClass::String) }
|
||||
fn as_string(&self) -> Option<Cow<'_, str>> { Some(Cow::Borrowed(self)) }
|
||||
}
|
||||
|
@ -331,16 +331,6 @@ impl<D: Domain, V: Value<D>> Value<D> for [V] {
|
|||
}
|
||||
}
|
||||
|
||||
impl<'v, D: Domain, V: Value<D>> Value<D> for &'v [V] {
|
||||
fn value_class(&self) -> ValueClass { ValueClass::Compound(CompoundClass::Sequence) }
|
||||
fn is_sequence(&self) -> bool { true }
|
||||
fn len(&self) -> Option<usize> { Some((self as &[V]).len()) }
|
||||
fn index(&self, i: usize) -> &dyn Value<D> { &self[i] }
|
||||
fn iter(&self) -> Option<Box<dyn Iterator<Item = &dyn Value<D>> + '_>> {
|
||||
Some(Box::new(self[..].iter().map(value)))
|
||||
}
|
||||
}
|
||||
|
||||
impl<D: Domain> Value<D> for Set<Box<dyn Value<D>>> {
|
||||
fn value_class(&self) -> ValueClass { ValueClass::Compound(CompoundClass::Set) }
|
||||
fn is_set(&self) -> bool { true }
|
||||
|
|
Loading…
Reference in New Issue