Rim

Struct Rim 

Source
pub struct Rim<T> {
    pub inner: Vec<T>,
}
Expand description

Contains a repeated insertion model (RIM) vector and methods to generate and trasnform them.

Fields§

§inner: Vec<T>

Implementations§

Source§

impl<T> Rim<T>

Source

pub fn from_vec(inner: Vec<T>) -> Rim<T>

Creates a Inversion object from the vector.

§Example
use permu_rs::rim::Rim;
let rim_vec = vec![0,0,1,1];
let rim = Rim::<u8>::from_vec(rim_vec);
Source

pub fn zeros(length: usize) -> Rim<T>

Creates a Rimvector of the length given.

Source

pub fn len(&self) -> usize

Returns the length of the inner Rim vector.

Source

pub fn to_permu(iv: &Rim<T>, out: &mut Permutation<T>) -> Result<(), Error>

Transforms a given insertion vector (RIM) into it’s permutation representation.

§Errors

Returns a LengthError if the length of the output permutation is not the length of the given rim vector + 1.

§Example
use permu_rs::{ permutation::Permutation, rim::Rim };
let rim = Rim::<u8>::from_vec(vec![0,2,2]);
let mut output = Permutation::<u8>::identity(4);

Rim::<u8>::to_permu(&rim, &mut output).unwrap();

println!("insertion vector: {:?}", rim.inner);
println!("permutation: {:?}", output.permu);

let target = Permutation::from_vec(vec![1,0,3,2]).unwrap();
assert_eq!(target, output);
Source

pub fn from_permu(permu: &Permutation<T>, out: &mut Rim<T>) -> Result<(), Error>

Transforms a given permutation vector into it’s insertion vector (Rim) representation.

§Errors

Returns a LengthError if the length of the given permutation is not the length of the output rim vector + 1.

§Example
use permu_rs::{ permutation::Permutation, rim::Rim };
let permu = Permutation::<u8>::from_vec(vec![1,0,3,2]).unwrap();
let mut rim = Rim::<u8>::zeros(3);

Rim::<u8>::from_permu(&permu, &mut rim).unwrap();

println!("permutation: {:?}", permu.permu);
println!("insertion vector: {:?}", rim.inner);

let target = Rim::<u8>::from_vec(vec![0,2,2]);
assert_eq!(target, rim);

Trait Implementations§

Source§

impl<T: Clone> Clone for Rim<T>

Source§

fn clone(&self) -> Rim<T>

Returns a duplicate 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<T: Debug> Debug for Rim<T>

Source§

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

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

impl<T: PartialEq> PartialEq for Rim<T>

Source§

fn eq(&self, other: &Rim<T>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<T> StructuralPartialEq for Rim<T>

Auto Trait Implementations§

§

impl<T> Freeze for Rim<T>

§

impl<T> RefUnwindSafe for Rim<T>
where T: RefUnwindSafe,

§

impl<T> Send for Rim<T>
where T: Send,

§

impl<T> Sync for Rim<T>
where T: Sync,

§

impl<T> Unpin for Rim<T>
where T: Unpin,

§

impl<T> UnwindSafe for Rim<T>
where T: 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.