[][src]Struct valerie::state::StateVec

pub struct StateVec<T> where
    T: Send + 'static, 
{ /* fields omitted */ }

A vector of States

Any type implementing StateTrait can be used with StateVec.

This uses RwLock of parking_lot internally with Vec from alloc.

Implementations

impl<T> StateVec<T> where
    T: Send
[src]

pub fn new() -> Self[src]

Declare an empty StateVec.

Examples

let vec = StateVec::new();
vec.push(StateAtomic::new(0));

vec.view(ul!(), |x| li!(x))

pub fn with_capacity(n: usize) -> Self[src]

Declare a StateVec with some initial capacity.

Examples

let vec = StateVec::with_capacity(10);
(0..10).for_each(|x| vec.push(StateAtomic::new(x)));

vec.view(ul!(), |x| li!(x))

impl<T> StateVec<T> where
    T: StateTrait + Send
[src]

pub fn view<F, U, V>(&self, enclose: Tag<U>, object: F) -> Tag<U> where
    F: FnOnce(T) -> V,
    F: Clone + 'static,
    V: Component + 'static,
    U: HtmlElement
[src]

Render the StateVec to the DOM. It will update if any element changes or even if the list changes automatically.

  • enclose is the Component inside which all of the elements will be present.
  • object is the function which will return a Component when passed a type following the StateTrait. The function will define how all the elements will be seen inside the enclose.

Examples

let vec = StateVec::with_capacity(10);
(0..10).for_each(|x| vec.push(StateAtomic::new(x)));

div!(
    vec.view(ul!(), |x| li!(x)),
    br!(),
    vec.view(ol!(), |x| li!("Element ", x))
)

pub fn push(&self, value: T)[src]

Push an element on to the StateVec.

Examples

let vec = StateVec::new();
vec.push(StateAtomic::new(0));

vec.view(ul!(), |x| li!(x))

pub fn insert(&self, index: usize, value: T)[src]

Insert an element into the StateVec.

Examples

let vec = StateVec::new();
vec.insert(0, StateAtomic::new(0));

vec.view(ul!(), |x| li!(x))

pub fn remove(&self, index: usize)[src]

Remove an element from the StateVec by index.

Examples

let vec = StateVec::with_capacity(10);
(0..10).for_each(|x| vec.push(StateAtomic::new(x)));
vec.remove(3);

vec.view(ul!(), |x| li!(x))

pub fn remove_elem(&self, elem: T)[src]

Remove an element from the StateVec using a clone of the element.

Examples

let vec = StateVec::with_capacity(10);
let removable = StateAtomic::new(13);
vec.push(removable.clone());
(0..10).for_each(|x| vec.push(StateAtomic::new(x)));

vec.remove_elem(removable);

vec.view(ul!(), |x| li!(x))

pub fn pop(&self)[src]

Pop an element from the end of the StateVec.

Examples

let vec = StateVec::with_capacity(10);
(0..10).for_each(|x| vec.push(StateAtomic::new(x)));
vec.pop();

vec.view(ul!(), |x| li!(x))

pub fn get(&self, index: usize) -> Option<T>[src]

Get an element from the StateVec using index.

Examples

let vec = StateVec::with_capacity(10);
(0..10).for_each(|x| vec.push(StateAtomic::new(x)));

div!(
    vec.get(3).unwrap(),
    vec.view(ul!(), |x| li!(x))
)

pub fn len(&self) -> usize[src]

Get the len of the StateVec.

Examples

let vec = StateVec::with_capacity(10);
(0..10).for_each(|x| vec.push(StateAtomic::new(x)));

div!(
    vec.len(),
    vec.view(ul!(), |x| li!(x))
)

pub fn is_empty(&self) -> bool[src]

Check whether StateVec is empty.

Examples

let vec = StateVec::with_capacity(10);
(0..10).for_each(|x| vec.push(StateAtomic::new(x)));

div!(
    vec.is_empty(),
    vec.view(ul!(), |x| li!(x))
)

impl<T> StateVec<StateAtomic<T>> where
    T: Copy + Send + Display
[src]

pub fn push_atomic(&self, value: T)[src]

Push an element on the StateVec. Same as push(StateAtomic::new(value)).

Examples

let vec = StateVec::new();
vec.push_atomic(0);

vec.view(ul!(), |x| li!(x))

pub fn insert_atomic(&self, index: usize, value: T)[src]

Push an element on the StateVec. Same as push(StateAtomic::insert(index, value)).

Examples

let vec = StateVec::new();
vec.insert_atomic(0, 0);

vec.view(ul!(), |x| li!(x))

impl<T> StateVec<StateMutex<T>> where
    T: Clone + Send + Display
[src]

pub fn push_mutex(&self, value: T)[src]

Push an element on the StateVec. Same as push(StateMutex::new(value)).

Examples

let vec = StateVec::new();
vec.push_mutex(0);

vec.view(ul!(), |x| li!(x))

pub fn insert_mutex(&self, index: usize, value: T)[src]

Push an element on the StateVec. Same as push(StateMutex::insert(index, value)).

Examples

let vec = StateVec::new();
vec.insert_mutex(0, 0);

vec.view(ul!(), |x| li!(x))

Trait Implementations

impl<T> Clone for StateVec<T> where
    T: Send + 'static, 
[src]

impl<T: Default> Default for StateVec<T> where
    T: Send + 'static, 
[src]

impl<T> FromIterator<T> for StateVec<T> where
    T: StateTrait + Send
[src]

impl<T> FromIterator<T> for StateVec<StateAtomic<T>> where
    T: Copy + Send + Display
[src]

impl<T> FromIterator<T> for StateVec<StateMutex<T>> where
    T: Clone + Send + Display
[src]

impl<T> IntoIterator for StateVec<T> where
    T: StateTrait + Send
[src]

type Item = T

The type of the elements being iterated over.

type IntoIter = IntoIteratorAdapter<T>

Which kind of iterator are we turning this into?

Auto Trait Implementations

impl<T> !RefUnwindSafe for StateVec<T>

impl<T> Send for StateVec<T> where
    T: Sync

impl<T> Sync for StateVec<T> where
    T: Sync

impl<T> Unpin for StateVec<T>

impl<T> !UnwindSafe for StateVec<T>

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<I> IntoIterator for I where
    I: Iterator
[src]

type Item = <I as Iterator>::Item

The type of the elements being iterated over.

type IntoIter = I

Which kind of iterator are we turning this into?

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.