Make Acc and AccountTemplate zero-copy deserializable

korrat
Oct 26, 2022, 7:05 PM
4UOASAH3CXHK4SI2RKXWAW7LLKHTCD36PXKCW273UW5SPJWJYLSAC

Dependencies

  • [2] W3MWSSJ7 Add a templating engine for accounts
  • [*] YDK6X6PP add a library of important types for beancount
  • [*] 2JBFREZG enable additional warnings
  • [*] UESS5YZE migrate dependencies into workspace manifest
  • [*] I2P2FTLE add basic parser for german decimals
  • [*] R7S2CWF7 Add type for account segments

Change contents

  • edit in common/beancount-types/src/account.rs at line 19
    [5.13979]
    [4.11491]
    use serde::Deserialize;
    use serde::Deserializer;
  • edit in common/beancount-types/src/account.rs at line 111
    [4.12550]
    [4.12550]
    }
    }
    impl<'de> Deserialize<'de> for &'de Acc {
    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
    where
    D: Deserializer<'de>,
    {
    let s = <&'de str>::deserialize(deserializer)?;
    s.try_into().map_err(serde::de::Error::custom)
  • edit in common/beancount-types/src/account/template.rs at line 6
    [2.9875]
    [2.9875]
    use serde::Deserialize;
    use serde::Deserializer;
  • replacement in common/beancount-types/src/account/template.rs at line 66
    [2.10999][2.10999:11016]()
    #[derive(Debug)]
    [2.10999]
    [2.11016]
    #[derive(Debug, Deserialize)]
    #[serde(
    bound = "'de: 't, Selector: TryFrom<&'t str>, Selector::Error: 'static + Diagnostic",
    try_from = "&'t str"
    )]
  • edit in common/beancount-types/src/account/template.rs at line 126
    [2.12721]
    [2.12721]
    }
    }
    impl<'t, Selector> Clone for Template<'t, Selector>
    where
    Selector: Clone,
    {
    fn clone(&self) -> Self {
    Self {
    base: self.base,
    segments: self.segments.clone(),
    }
  • edit in common/beancount-types/Cargo.toml at line 19
    [6.411]
    [6.411]
    serde.workspace = true
  • edit in Cargo.lock at line 218
    [4.26706]
    [4.26706]
    "serde",
  • edit in Cargo.lock at line 934
    [8.16649]
    [8.16649]
    "rust_decimal",
    "serde",