Struct Relation

Source
pub struct Relation<I, F> { /* private fields */ }
Expand description

A structural representation of a relation

Takes a relation function and a starter number. Then it can calculate the next value based on the current value

The concept is based on the Mathematic Recursion and Financial Modelling concept of relations

Implementations§

Source§

impl<I: Signed + Copy, F: FnOnce(I) -> I + Copy> Relation<I, F>

Source

pub fn new(starter: I, relation: F) -> Self

Create a new Relation

Source

pub fn calculate_next(&self) -> I

Calculates and returns the next number in the sequence

Source

pub fn next(&mut self)

Calculates the next number in the sequence and updates the struct

Source

pub fn nth(&mut self, index: usize) -> I

Calls Relation::next index times, and then returns the result

Trait Implementations§

Source§

impl<I: Clone, F: Clone> Clone for Relation<I, F>

Source§

fn clone(&self) -> Relation<I, F>

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<I: Debug, F: Debug> Debug for Relation<I, F>

Source§

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

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

impl<I: Copy, F: Copy> Copy for Relation<I, F>

Auto Trait Implementations§

§

impl<I, F> Freeze for Relation<I, F>
where I: Freeze, F: Freeze,

§

impl<I, F> RefUnwindSafe for Relation<I, F>

§

impl<I, F> Send for Relation<I, F>
where I: Send, F: Send,

§

impl<I, F> Sync for Relation<I, F>
where I: Sync, F: Sync,

§

impl<I, F> Unpin for Relation<I, F>
where I: Unpin, F: Unpin,

§

impl<I, F> UnwindSafe for Relation<I, F>
where I: UnwindSafe, F: UnwindSafe,

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> 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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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.