radix_common/data/manifest/
converter.rs

1use super::model::{ManifestDecimal, ManifestNonFungibleLocalId, ManifestPreciseDecimal};
2use crate::data::scrypto::model::*;
3use crate::math::*;
4use sbor::rust::prelude::*;
5
6/* Utils for conversion between "trusted" manifest value and rust value */
7
8pub fn to_decimal(d: &ManifestDecimal) -> Decimal {
9    Decimal::try_from(d.0.as_slice()).unwrap()
10}
11
12pub fn to_precise_decimal(d: &ManifestPreciseDecimal) -> PreciseDecimal {
13    PreciseDecimal::try_from(d.0.as_slice()).unwrap()
14}
15
16pub fn to_non_fungible_local_id(id: ManifestNonFungibleLocalId) -> NonFungibleLocalId {
17    match id {
18        ManifestNonFungibleLocalId::String(i) => NonFungibleLocalId::string(i).unwrap(),
19        ManifestNonFungibleLocalId::Integer(i) => NonFungibleLocalId::integer(i),
20        ManifestNonFungibleLocalId::Bytes(i) => NonFungibleLocalId::bytes(i).unwrap(),
21        ManifestNonFungibleLocalId::RUID(i) => NonFungibleLocalId::ruid(i),
22    }
23}
24
25pub fn from_decimal(d: &Decimal) -> ManifestDecimal {
26    ManifestDecimal(d.to_vec().try_into().unwrap())
27}
28
29pub fn from_precise_decimal(d: &PreciseDecimal) -> ManifestPreciseDecimal {
30    ManifestPreciseDecimal(d.to_vec().try_into().unwrap())
31}
32
33pub fn from_non_fungible_local_id(id: NonFungibleLocalId) -> ManifestNonFungibleLocalId {
34    match id {
35        NonFungibleLocalId::String(i) => {
36            ManifestNonFungibleLocalId::string(i.value().to_owned()).unwrap()
37        }
38        NonFungibleLocalId::Integer(i) => ManifestNonFungibleLocalId::integer(i.value()).unwrap(),
39        NonFungibleLocalId::Bytes(i) => {
40            ManifestNonFungibleLocalId::bytes(i.value().to_owned()).unwrap()
41        }
42        NonFungibleLocalId::RUID(i) => ManifestNonFungibleLocalId::ruid(i.value().clone()),
43    }
44}