diff --git a/implementations/rust/preserves-schema/src/compiler/types.rs b/implementations/rust/preserves-schema/src/compiler/types.rs index bc774bd..85e1aff 100644 --- a/implementations/rust/preserves-schema/src/compiler/types.rs +++ b/implementations/rust/preserves-schema/src/compiler/types.rs @@ -133,8 +133,8 @@ pub fn field_type(p: &SimplePattern) -> TField { SimplePattern::Atom { atom_kind: k } => match **k { AtomKind::Boolean => TField::Base("bool".to_owned()), - AtomKind::Float => TField::Base("f32".to_owned()), - AtomKind::Double => TField::Base("f64".to_owned()), + AtomKind::Float => TField::Base("preserves::value::Float".to_owned()), + AtomKind::Double => TField::Base("preserves::value::Double".to_owned()), AtomKind::SignedInteger => TField::Base("preserves::value::signed_integer::SignedInteger".to_owned()), AtomKind::String => TField::Base("std::string::String".to_owned()), AtomKind::ByteString => TField::Base("std::vec::Vec".to_owned()), diff --git a/implementations/rust/preserves/src/value/repr.rs b/implementations/rust/preserves/src/value/repr.rs index b37f5df..b89abd6 100644 --- a/implementations/rust/preserves/src/value/repr.rs +++ b/implementations/rust/preserves/src/value/repr.rs @@ -206,7 +206,9 @@ impl Eq for Double {} impl, D: Domain> From for Value { fn from(v: bool) -> Self { Value::Boolean(v) } } impl, D: Domain> From for Value { fn from(v: f32) -> Self { Value::Float(Float::from(v)) } } +impl, D: Domain> From<&Float> for Value { fn from(v: &Float) -> Self { Value::Float(v.clone()) } } impl, D: Domain> From for Value { fn from(v: f64) -> Self { Value::Double(Double::from(v)) } } +impl, D: Domain> From<&Double> for Value { fn from(v: &Double) -> Self { Value::Double(v.clone()) } } impl, D: Domain> From for Value { fn from(v: u8) -> Self { Value::from(i128::from(v)) } } impl, D: Domain> From for Value { fn from(v: i8) -> Self { Value::from(i128::from(v)) } }