Skip to main content

BookingEngine

Struct BookingEngine 

Source
pub struct BookingEngine { /* private fields */ }
Expand description

Booking engine that tracks inventory across transactions.

Implementations§

Source§

impl BookingEngine

Source

pub fn new() -> Self

Create a new booking engine with default FIFO booking.

Source

pub fn with_method(method: BookingMethod) -> Self

Create a booking engine with a specific default booking method.

Source

pub fn set_account_method( &mut self, account: InternedStr, method: BookingMethod, )

Register the booking method for a specific account.

Call this for each open directive before booking transactions for that account, so the engine uses the per-account method (e.g. FIFO, LIFO, NONE) rather than the engine-wide default. Subsequent calls overwrite the previous method for the account.

Source

pub fn register_account_methods<'a, I>(&mut self, directives: I)
where I: IntoIterator<Item = &'a Directive>,

Scan a sequence of directives and register any per-account booking methods found on open directives. Open directives whose booking method is absent or fails to parse are silently ignored (they fall back to the engine-wide default).

This is a convenience wrapper around Self::set_account_method for the common pipeline pattern of scanning all directives once before the booking loop. Call this before booking any transactions so the engine uses each account’s declared method rather than the engine-wide default for every account.

Source

pub fn inventory(&self, account: &InternedStr) -> Option<&Inventory>

Get the inventory for an account.

Source

pub fn book(&self, txn: &Transaction) -> Result<BookedTransaction, BookingError>

Book a transaction: fill in empty cost specs and calculate gains.

This does NOT modify the internal inventories - call apply for that.

When a reduction matches multiple lots (e.g., selling shares that were purchased across multiple buy transactions), the posting is expanded into multiple postings, one for each matched lot. This matches Python beancount’s behavior.

Source

pub fn apply(&mut self, txn: &Transaction)

Apply a transaction to the inventories (update balances).

Source

pub fn book_and_interpolate( &self, txn: &Transaction, ) -> Result<InterpolationResult, BookingError>

Book and interpolate a transaction.

This fills in empty cost specs, then interpolates any missing amounts.

Trait Implementations§

Source§

impl Debug for BookingEngine

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for BookingEngine

Source§

fn default() -> BookingEngine

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> ArchivePointee for T

Source§

type ArchivedMetadata = ()

The archived version of the pointer metadata for this type.
Source§

fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata

Converts some archived metadata to the pointer metadata for itself.
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> LayoutRaw for T

Source§

fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>

Returns the layout of the type.
Source§

impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
where T: SharedNiching<N1, N2>, N1: Niching<T>, N2: Niching<T>,

Source§

unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool

Returns whether the given value has been niched. Read more
Source§

fn resolve_niched(out: Place<NichedOption<T, N1>>)

Writes data to out indicating that a T is niched.
Source§

impl<T> Pointee for T

Source§

type Metadata = ()

The metadata type for pointers and references to this type.
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.