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§
Source§impl<T: Clone> Array<T> for RcArray<T>
impl<T: Clone> Array<T> for RcArray<T>
Source§fn 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.Source§fn 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.Source§fn 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.Source§unsafe 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.Source§unsafe 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.Source§impl<T: Clone> DynamicArray<T> for RcArray<T>
impl<T: Clone> DynamicArray<T> for RcArray<T>
Source§fn with_capacity(cap: usize) -> Self
fn with_capacity(cap: usize) -> Self
Creates a array with the specified capacity. Read more
Source§fn reserve(&mut self, additional: usize)
fn reserve(&mut self, additional: usize)
Reserve capacity for at least
additional more elements. Read moreSource§unsafe 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
Source§fn 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 moreSource§impl<T> FromIterator<T> for RcArray<T>
impl<T> FromIterator<T> for RcArray<T>
Source§fn 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> Freeze for RcArray<T>
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§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more