Struct beancount_parser_2::Posting
source · #[non_exhaustive]pub struct Posting<S, D> {
pub flag: Option<Flag>,
pub account: Account<S>,
pub amount: Option<Amount<S, D>>,
pub cost: Option<Cost<S, D>>,
pub price: Option<PostingPrice<S, 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 = beancount_parser_2::parse::<&str, f64>(input).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.unwrap().value, 2.0);
assert_eq!(posting.cost.as_ref().unwrap().amount.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<Flag>
Transaction flag (*
or !
or None
when absent)
account: Account<S>
Account modified by the posting
amount: Option<Amount<S, D>>
Amount being added to the account
cost: Option<Cost<S, D>>
Cost (@
or @@
) syntax
price: Option<PostingPrice<S, D>>
Price (content within {
and }
)
Trait Implementations§
Auto Trait Implementations§
impl<S, D> RefUnwindSafe for Posting<S, D>where D: RefUnwindSafe, S: RefUnwindSafe,
impl<S, D> Send for Posting<S, D>where D: Send, S: Send,
impl<S, D> Sync for Posting<S, D>where D: Sync, S: Sync,
impl<S, D> Unpin for Posting<S, D>where D: Unpin, S: Unpin,
impl<S, D> UnwindSafe for Posting<S, D>where D: UnwindSafe, S: 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