edit in common/beancount-types/tests/account_template.rs at line 1
+ use core::str::FromStr;
+
replacement in common/beancount-types/tests/account_template.rs at line 7
[3.6865]→[3.6865:6928](∅→∅) − #[derive(Clone, Copy, Debug)]
− struct AnySelector<'t>(&'t str);
+ #[derive(Clone, Debug)]
+ struct AnySelector(String);
replacement in common/beancount-types/tests/account_template.rs at line 10
[3.6929]→[3.6929:7014](∅→∅) − impl<'t> TryFrom<&'t str> for AnySelector<'t> {
− type Error = NeverSelectorError;
+ impl FromStr for AnySelector {
+ type Err = NeverSelectorError;
replacement in common/beancount-types/tests/account_template.rs at line 13
[3.7015]→[3.7015:7122](∅→∅) − fn try_from(value: &'t str) -> Result<Self, Self::Error> {
− Ok(Self(value.try_into().unwrap()))
+ fn from_str(value: &str) -> Result<Self, Self::Err> {
+ Ok(Self(value.into()))
replacement in common/beancount-types/tests/account_template.rs at line 24
[3.7247]→[3.7247:7326](∅→∅) − impl<'t> TryFrom<&'t str> for NoSelector {
− type Error = SelectorError<'t>;
+ impl FromStr for NoSelector {
+ type Err = SelectorError;
replacement in common/beancount-types/tests/account_template.rs at line 27
[3.7327]→[3.7327:7433](∅→∅) − fn try_from(selector: &'t str) -> Result<Self, Self::Error> {
− Err(SelectorError { selector })
+ fn from_str(selector: &str) -> Result<Self, Self::Err> {
+ SelectorSnafu { selector }.fail()
replacement in common/beancount-types/tests/account_template.rs at line 33
[3.7478]→[3.7478:7528](∅→∅) − struct SelectorError<'t> {
− selector: &'t str,
+ struct SelectorError {
+ selector: String,
replacement in common/beancount-types/src/account.rs at line 335
[3.16993]→[3.16993:17017](∅→∅) − #[derive(Clone, Debug)]
+ #[derive(Clone, Debug, Deserialize)]
edit in common/beancount-types/src/account.rs at line 337
+ #[serde(try_from = "String")]
edit in common/beancount-types/src/account.rs at line 401
+ }
+ }
+
+ impl From<&Account> for Account {
+ #[inline]
+ fn from(value: &Account) -> Self {
+ value.clone()
edit in common/beancount-types/src/account/template.rs at line 3
+ use core::str::FromStr;
edit in common/beancount-types/src/account/template.rs at line 13
[3.9989]→[3.9989:10005](∅→∅) replacement in common/beancount-types/src/account/template.rs at line 17
[3.10078]→[3.10078:10100](∅→∅) replacement in common/beancount-types/src/account/template.rs at line 30
[3.10368]→[3.10368:10395](∅→∅) replacement in common/beancount-types/src/account/template.rs at line 65
[3.10999]→[3.374:404](∅→∅) − #[derive(Debug, Deserialize)]
+ #[derive(Clone, Debug, Deserialize)]
replacement in common/beancount-types/src/account/template.rs at line 67
− bound = "'de: 't, Selector: TryFrom<&'t str>, Selector::Error: 'static + Diagnostic",
− try_from = "&'t str"
+ bound = "Selector: FromStr, Selector::Err: 'static + Diagnostic",
+ try_from = "String"
replacement in common/beancount-types/src/account/template.rs at line 70
[3.531]→[3.11016:11113](∅→∅),
[3.11016]→[3.11016:11113](∅→∅) − pub struct Template<'t, Selector> {
− base: &'t Acc,
− segments: Vec<Segment<'t, Selector>>,
+ pub struct Template<Selector> {
+ base: Account,
+ segments: Vec<Segment<Selector>>,
replacement in common/beancount-types/src/account/template.rs at line 75
[3.11116]→[3.11116:11158](∅→∅) − impl<'t, Selector> Template<'t, Selector>
+ impl<Selector> Template<Selector>
replacement in common/beancount-types/src/account/template.rs at line 77
[3.11164]→[3.11164:11229](∅→∅) − Selector: TryFrom<&'t str>,
− Selector::Error: Diagnostic,
+ Selector: FromStr,
+ Selector::Err: Diagnostic,
replacement in common/beancount-types/src/account/template.rs at line 80
[3.11231]→[3.11231:11313](∅→∅) − pub fn parse(template: &'t str) -> Result<Self, Error<'t, Selector::Error>> {
+ pub fn parse(template: &str) -> Result<Self, Error<Selector::Err>> {
replacement in common/beancount-types/src/account/template.rs at line 111
[3.12212]→[3.12212:12256](∅→∅) − impl<'t, Selector> Template<'t, Selector> {
+ impl<'t, Selector> Template<Selector> {
edit in common/beancount-types/src/account/template.rs at line 115
[3.12392]→[3.12392:12414](∅→∅) replacement in common/beancount-types/src/account/template.rs at line 117
[3.12488]→[3.12488:12531](∅→∅) − Segment::Literal(seg) => *seg,
+ Segment::Literal(seg) => seg,
replacement in common/beancount-types/src/account/template.rs at line 121
[3.12612]→[3.12612:12675](∅→∅),
[3.12675]→[2.1538:1572](∅→∅),
[2.1572]→[3.12710:12721](∅→∅),
[3.12710]→[3.12710:12721](∅→∅) − fields.fold(self.base.to_owned(), |account, segment| {
− account.join(segment)
− })
+ fields.fold(self.base.clone(), Account::join)
replacement in common/beancount-types/src/account/template.rs at line 125
− impl<'t, Selector> Clone for Template<'t, Selector>
+ impl<Selector> TryFrom<&str> for Template<Selector>
replacement in common/beancount-types/src/account/template.rs at line 127
+ Selector: FromStr,
+ Selector::Err: 'static + Diagnostic,
replacement in common/beancount-types/src/account/template.rs at line 130
− fn clone(&self) -> Self {
− Self {
− base: self.base,
− segments: self.segments.clone(),
− }
+ type Error = Error<Selector::Err>;
+
+ fn try_from(template: &str) -> Result<Self, Self::Error> {
+ Self::parse(template)
replacement in common/beancount-types/src/account/template.rs at line 137
[3.12730]→[3.12730:12793](∅→∅) − impl<'t, Selector> TryFrom<&'t str> for Template<'t, Selector>
+ impl<Selector> TryFrom<String> for Template<Selector>
replacement in common/beancount-types/src/account/template.rs at line 139
[3.12799]→[3.12799:12874](∅→∅) − Selector: TryFrom<&'t str>,
− Selector::Error: 'static + Diagnostic,
+ Selector: FromStr,
+ Selector::Err: 'static + Diagnostic,
replacement in common/beancount-types/src/account/template.rs at line 142
[3.12876]→[3.12876:12921](∅→∅) − type Error = Error<'t, Selector::Error>;
+ type Error = Error<Selector::Err>;
replacement in common/beancount-types/src/account/template.rs at line 144
[3.12922]→[3.12922:13018](∅→∅) − fn try_from(template: &'t str) -> Result<Self, Self::Error> {
− Self::parse(template)
+ fn try_from(template: String) -> Result<Self, Self::Error> {
+ Self::parse(&template)
replacement in common/beancount-types/src/account/template.rs at line 150
[3.13051]→[3.13051:13113](∅→∅) − pub(crate) enum Segment<'t, Selector> {
− Literal(&'t Seg),
+ pub(crate) enum Segment<Selector> {
+ Literal(crate::Segment),
replacement in common/beancount-types/src/account/template.rs at line 155
[3.13140]→[3.13140:13181](∅→∅) − impl<'t, Selector> Segment<'t, Selector>
+ impl<Selector> Segment<Selector>
replacement in common/beancount-types/src/account/template.rs at line 157
[3.13187]→[3.13187:13262](∅→∅) − Selector: TryFrom<&'t str>,
− Selector::Error: 'static + Diagnostic,
+ Selector: FromStr,
+ Selector::Err: Diagnostic,
replacement in common/beancount-types/src/account/template.rs at line 160
[3.13264]→[3.13264:13362](∅→∅) − fn parse(segment: &'t str, span: SourceSpan) -> Result<Self, ParsingError<Selector::Error>> {
+ fn parse(segment: &str, span: SourceSpan) -> Result<Self, ParsingError<Selector::Err>> {
replacement in common/beancount-types/src/account/template.rs at line 165
[3.13531]→[3.13531:13563](∅→∅) replacement in common/beancount-types/src/account/template.rs at line 169
[3.13657]→[3.13657:13695](∅→∅) − <&Seg>::try_from(segment)
+ crate::Segment::try_from(segment)
replacement in common/beancount-types/src/account/template.rs at line 176
[3.13802]→[3.13802:13899](∅→∅) − impl<'t, Selector> From<&'t Seg> for Segment<'t, Selector> {
− fn from(seg: &'t Seg) -> Self {
+ impl<Selector> From<crate::Segment> for Segment<Selector> {
+ fn from(seg: crate::Segment) -> Self {
replacement in common/beancount-types/src/account/template.rs at line 182
[3.13935]→[3.13935:14000](∅→∅) − fn parse_trailing_segments<'t, Selector>(
− segments: &'t str,
+ fn parse_trailing_segments<Selector>(
+ segments: &str,
replacement in common/beancount-types/src/account/template.rs at line 185
[3.14027]→[3.14027:14099](∅→∅) − ) -> Result<Vec<Segment<Selector>>, Vec<ParsingError<Selector::Error>>>
+ ) -> Result<Vec<Segment<Selector>>, Vec<ParsingError<Selector::Err>>>
replacement in common/beancount-types/src/account/template.rs at line 187
[3.14105]→[3.14105:14170](∅→∅) − Selector: TryFrom<&'t str>,
− Selector::Error: Diagnostic,
+ Selector: FromStr,
+ Selector::Err: Diagnostic,