1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
//! Operator traits not present in Rust's `std` //! //! See also `cpp_utils::cmp` for comparison operator traits. // TODO: `&mut self` for increment and decrement? /// Represents C++'s prefix increment (`++a`). pub trait Increment { /// Output type. type Output; /// Increment `self`. fn inc(self) -> Self::Output; } /// Represents C++'s prefix decrement (`--a`). pub trait Decrement { /// Output type. type Output; /// Decrement `self`. fn dec(self) -> Self::Output; } /// Represents C++'s indirection operator (`*a`). pub trait Indirection { /// Output type. type Output; /// Returns the object `self` is pointing to. fn indirection(self) -> Self::Output; } /// Represents C++'s `begin() const` function. pub trait Begin { /// Output type. type Output; /// Returns a C++ const iterator object pointing to the beginning of the collection. fn begin(self) -> Self::Output; } /// Represents C++'s `begin()` function. pub trait BeginMut { /// Output type. type Output; /// Returns a C++ mutable iterator object pointing to the beginning of the collection. fn begin_mut(self) -> Self::Output; } /// Represents C++'s `end() const` function. pub trait End { /// Output type. type Output; /// Returns a C++ const iterator object pointing to the end of the collection. fn end(self) -> Self::Output; } /// Represents C++'s `end()` function. pub trait EndMut { /// Output type. type Output; /// Returns a C++ mutable iterator object pointing to the end of the collection. fn end_mut(self) -> Self::Output; }