Struct bill::Bill
[−]
[src]
pub struct Bill<P> { pub items_by_tax: BTreeMap<Tax, ItemList<P>>, }
This is where the magic happens.
Fields
items_by_tax: BTreeMap<Tax, ItemList<P>>
Methods
impl<P: BillProduct> Bill<P>
[src]
fn new() -> Self
Instantiates a new Bill
fn to_items_with_tax(&self) -> BTreeMap<Tax, &BillItem<P>>
fn as_items_with_tax(&self) -> Vec<(Tax, &BillItem<P>)>
TODO Make this return an Iterator
fn as_items(&self) -> Vec<&BillItem<P>>
TODO Make this return an Iterator
fn add(&mut self, item: BillItem<P>)
Adds a new BillItem
to the list.
fn add_item(&mut self, amount: Amount, product: P)
Instantiates and adds a new BillItem
to the list.
fn sums_by_tax(&self) -> BTreeMap<Tax, Money>
fn gross_total(&self) -> Money
fn tax_total(&self) -> Money
fn net_total(&self) -> Money
Methods from Deref<Target = BTreeMap<Tax, ItemList<P>>>
fn get<Q>(&self, key: &Q) -> Option<&V> where
K: Borrow<Q>,
Q: Ord + ?Sized,
1.0.0
K: Borrow<Q>,
Q: Ord + ?Sized,
Returns a reference to the value corresponding to the key.
The key may be any borrowed form of the map's key type, but the ordering on the borrowed form must match the ordering on the key type.
Examples
Basic usage:
use std::collections::BTreeMap; let mut map = BTreeMap::new(); map.insert(1, "a"); assert_eq!(map.get(&1), Some(&"a")); assert_eq!(map.get(&2), None);
fn contains_key<Q>(&self, key: &Q) -> bool where
K: Borrow<Q>,
Q: Ord + ?Sized,
1.0.0
K: Borrow<Q>,
Q: Ord + ?Sized,
Returns true
if the map contains a value for the specified key.
The key may be any borrowed form of the map's key type, but the ordering on the borrowed form must match the ordering on the key type.
Examples
Basic usage:
use std::collections::BTreeMap; let mut map = BTreeMap::new(); map.insert(1, "a"); assert_eq!(map.contains_key(&1), true); assert_eq!(map.contains_key(&2), false);
fn range<T, R>(&self, range: R) -> Range<K, V> where
K: Borrow<T>,
R: RangeArgument<T>,
T: Ord + ?Sized,
1.17.0
K: Borrow<T>,
R: RangeArgument<T>,
T: Ord + ?Sized,
Constructs a double-ended iterator over a sub-range of elements in the map.
The simplest way is to use the range syntax min..max
, thus range(min..max)
will
yield elements from min (inclusive) to max (exclusive).
The range may also be entered as (Bound<T>, Bound<T>)
, so for example
range((Excluded(4), Included(10)))
will yield a left-exclusive, right-inclusive
range from 4 to 10.
Panics
Panics if range start > end
.
Panics if range start == end
and both bounds are Excluded
.
Examples
Basic usage:
use std::collections::BTreeMap; use std::collections::Bound::Included; let mut map = BTreeMap::new(); map.insert(3, "a"); map.insert(5, "b"); map.insert(8, "c"); for (&key, &value) in map.range((Included(&4), Included(&8))) { println!("{}: {}", key, value); } assert_eq!(Some((&5, &"b")), map.range(4..).next());
fn iter(&self) -> Iter<K, V>
1.0.0
Gets an iterator over the entries of the map, sorted by key.
Examples
Basic usage:
use std::collections::BTreeMap; let mut map = BTreeMap::new(); map.insert(3, "c"); map.insert(2, "b"); map.insert(1, "a"); for (key, value) in map.iter() { println!("{}: {}", key, value); } let (first_key, first_value) = map.iter().next().unwrap(); assert_eq!((*first_key, *first_value), (1, "a"));
fn keys(&'a self) -> Keys<'a, K, V>
1.0.0
Gets an iterator over the keys of the map, in sorted order.
Examples
Basic usage:
use std::collections::BTreeMap; let mut a = BTreeMap::new(); a.insert(2, "b"); a.insert(1, "a"); let keys: Vec<_> = a.keys().cloned().collect(); assert_eq!(keys, [1, 2]);
fn values(&'a self) -> Values<'a, K, V>
1.0.0
Gets an iterator over the values of the map, in order by key.
Examples
Basic usage:
use std::collections::BTreeMap; let mut a = BTreeMap::new(); a.insert(1, "hello"); a.insert(2, "goodbye"); let values: Vec<&str> = a.values().cloned().collect(); assert_eq!(values, ["hello", "goodbye"]);
fn len(&self) -> usize
1.0.0
Returns the number of elements in the map.
Examples
Basic usage:
use std::collections::BTreeMap; let mut a = BTreeMap::new(); assert_eq!(a.len(), 0); a.insert(1, "a"); assert_eq!(a.len(), 1);
fn is_empty(&self) -> bool
1.0.0
Returns true
if the map contains no elements.
Examples
Basic usage:
use std::collections::BTreeMap; let mut a = BTreeMap::new(); assert!(a.is_empty()); a.insert(1, "a"); assert!(!a.is_empty());