Struct beancount_parser::Posting
source · #[non_exhaustive]pub struct Posting<D> {
pub flag: Option<char>,
pub account: Account,
pub amount: Option<Amount<D>>,
pub cost: Option<Cost<D>>,
pub price: Option<PostingPrice<D>>,
pub metadata: Map<D>,
}
Expand description
A transaction posting
§Example
let input = r#"
2022-05-22 * "Grocery shopping"
Assets:Cash 1 CHF {2 PLN} @ 3 EUR
Expenses:Groceries
"#;
let beancount: BeancountFile<f64> = input.parse().unwrap();
let DirectiveContent::Transaction(trx) = &beancount.directives[0].content else {
unreachable!("was not a transaction")
};
let posting = &trx.postings[0];
assert_eq!(posting.account.as_str(), "Assets:Cash");
assert_eq!(posting.amount.as_ref().unwrap().value, 1.0);
assert_eq!(posting.amount.as_ref().unwrap().currency.as_str(), "CHF");
assert_eq!(posting.cost.as_ref().unwrap().amount.as_ref().unwrap().value, 2.0);
assert_eq!(posting.cost.as_ref().unwrap().amount.as_ref().unwrap().currency.as_str(), "PLN");
let Some(PostingPrice::Unit(price)) = &posting.price else {
unreachable!("no price");
};
assert_eq!(price.value, 3.0);
assert_eq!(price.currency.as_str(), "EUR");
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Non-exhaustive structs could have additional fields added in future. Therefore, non-exhaustive structs cannot be constructed in external crates using the traditional
Struct { .. }
syntax; cannot be matched against without a wildcard ..
; and struct update syntax will not work.flag: Option<char>
Transaction flag (*
or !
or None
when absent)
account: Account
Account modified by the posting
amount: Option<Amount<D>>
Amount being added to the account
cost: Option<Cost<D>>
Cost (content within {
and }
)
price: Option<PostingPrice<D>>
Price (@
or @@
) syntax
metadata: Map<D>
The metadata attached to the posting
Trait Implementations§
source§impl<D: PartialEq> PartialEq for Posting<D>
impl<D: PartialEq> PartialEq for Posting<D>
impl<D> StructuralPartialEq for Posting<D>
Auto Trait Implementations§
impl<D> Freeze for Posting<D>where
D: Freeze,
impl<D> RefUnwindSafe for Posting<D>where
D: RefUnwindSafe,
impl<D> Send for Posting<D>where
D: Send,
impl<D> Sync for Posting<D>where
D: Sync,
impl<D> Unpin for Posting<D>where
D: Unpin,
impl<D> UnwindSafe for Posting<D>where
D: UnwindSafe,
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more