Struct fera_array::RcArray
source · pub struct RcArray<T> { /* private fields */ }
Expand description
A reference-counted pointer to an array.
It allow access to the elements of the array with one indirection, allow the array to grow
until the specified capacity and has a function RcArray::make_mut
.
It is different from Rc<Vec>
and Rc<[T]>
. In Rc<Vec>
it is necessary to follow two
indirection to access an element. In Rc<[T]>
the array cannot grow and the function
Rc::make_mut
is not applicable.
TODO: write about mem::size_of
.
Examples
use fera_array::{Array, RcArray};
let a = RcArray::with_value(0, 5);
// a and b share the inner data, this is a O(1) operation
let mut b = a.clone();
// the inner data in cloned (copy on write)
b[1] = 1;
assert_eq!(0, a[1]);
assert_eq!(1, b[1]);
// the inner data is not shared, so it can be modified without being cloned
b[2] = 2;
Implementations
Trait Implementations
sourceimpl<T: Clone> Array<T> for RcArray<T>
impl<T: Clone> Array<T> for RcArray<T>
sourcefn with_value(value: T, n: usize) -> Selfwhere
T: Clone,
fn with_value(value: T, n: usize) -> Selfwhere
T: Clone,
Creates a new array with
n
repeated value
.sourcefn get(&self, index: usize) -> Option<&T>
fn get(&self, index: usize) -> Option<&T>
Returns a reference to the element of the array at
index
, or None
if the index is out
of bounds. Read moresourcefn get_mut(&mut self, index: usize) -> Option<&mut T>
fn get_mut(&mut self, index: usize) -> Option<&mut T>
Returns a mutable reference to the element of the array at
index
, or None
if the index
is out of bounds. Read moresourceunsafe fn get_unchecked(&self, index: usize) -> &T
unsafe fn get_unchecked(&self, index: usize) -> &T
Returns a reference to the element of the array at
index
, without doing bounds checking.sourceunsafe fn get_unchecked_mut(&mut self, index: usize) -> &mut T
unsafe fn get_unchecked_mut(&mut self, index: usize) -> &mut T
Returns a mutable reference to the element of the array at
index
, without doing bounds
checking. Read moresourceimpl<T: Clone> DynamicArray<T> for RcArray<T>
impl<T: Clone> DynamicArray<T> for RcArray<T>
sourcefn with_capacity(cap: usize) -> Self
fn with_capacity(cap: usize) -> Self
Creates a array with the specified capacity. Read more
sourcefn reserve(&mut self, additional: usize)
fn reserve(&mut self, additional: usize)
Reserve capacity for at least
additional
more elements. Read moresourceunsafe fn push_unchecked(&mut self, value: T)
unsafe fn push_unchecked(&mut self, value: T)
Write value to the end of the array and increment the length. Read more
sourcefn extend<I>(&mut self, iter: I)where
Self: Sized,
I: IntoIterator<Item = T>,
fn extend<I>(&mut self, iter: I)where
Self: Sized,
I: IntoIterator<Item = T>,
Appends all elements of
iter
to the array. Read moresourcefn extend_from_slice(&mut self, other: &[T])where
T: Clone,
fn extend_from_slice(&mut self, other: &[T])where
T: Clone,
Appends all elements in a slice to the array. Read more
sourcefn extend_with_element(&mut self, value: T, n: usize)where
T: Clone,
fn extend_with_element(&mut self, value: T, n: usize)where
T: Clone,
sourceimpl<T> FromIterator<T> for RcArray<T>
impl<T> FromIterator<T> for RcArray<T>
sourcefn from_iter<I>(iter: I) -> Selfwhere
I: IntoIterator<Item = T>,
fn from_iter<I>(iter: I) -> Selfwhere
I: IntoIterator<Item = T>,
Creates a value from an iterator. Read more
Auto Trait Implementations
impl<T> !RefUnwindSafe for RcArray<T>
impl<T> !Send for RcArray<T>
impl<T> !Sync for RcArray<T>
impl<T> Unpin for RcArray<T>
impl<T> !UnwindSafe for RcArray<T>
Blanket Implementations
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more