[−][src]Struct c_vec::CSlice
The type representing an 'unsafe' non-mutable foreign chunk of memory.
Example
use c_vec::CSlice; let slice = &[0, 1, 2]; let ptr = slice.as_ptr(); let cslice = unsafe { CSlice::new(ptr, slice.len()) };
Implementations
impl<'a, T> CSlice<'a, T>
[src]
pub unsafe fn new(base: *const T, len: usize) -> CSlice<'a, T>
[src]
Create a CSlice
from a raw pointer to a buffer with a given length.
Panics if the given pointer is null. The returned slice will not attempt to deallocate the slice when dropped.
Arguments
- base - A raw pointer to a buffer
- len - The number of elements in the buffer
Example
use c_vec::CSlice; let slice = &[0, 1, 2]; let ptr = slice.as_ptr(); let cslice = unsafe { CSlice::new(ptr, slice.len()) };
pub fn get(&'a self, ofs: usize) -> Option<&'a T>
[src]
Retrieves an element at a given index, returning None
if the requested
index is greater than the length of the slice.
Example
use c_vec::CSlice; let slice = &[0, 1, 2]; let ptr = slice.as_ptr(); let cslice = unsafe { CSlice::new(ptr, slice.len()) }; assert_eq!(cslice.get(1), slice.get(1));
pub unsafe fn get_unchecked(&'a self, ofs: usize) -> &'a T
[src]
Returns a reference to an element without doing any check.
Example
use c_vec::CSlice; let slice = &[0, 1, 2]; let ptr = slice.as_ptr(); let cslice = unsafe { CSlice::new(ptr, slice.len()) }; unsafe { assert_eq!(cslice.get_unchecked(1), slice.get_unchecked(1)); }
pub fn len(&self) -> usize
[src]
Returns the number of items in this slice.
Example
use c_vec::CSlice; let slice = &[0, 1, 2]; let ptr = slice.as_ptr(); let cslice = unsafe { CSlice::new(ptr, slice.len()) }; assert_eq!(cslice.len(), slice.len());
pub fn is_empty(&self) -> bool
[src]
Returns whether this slice is empty.
Example
use c_vec::CSlice; let slice = &[0, 1, 2]; let ptr = slice.as_ptr(); let cslice = unsafe { CSlice::new(ptr, slice.len()) }; assert_eq!(cslice.is_empty(), slice.is_empty());
pub fn iter<'b>(&'b self) -> CSliceIter<'a, 'b, T>ⓘNotable traits for CSliceIter<'a, 'b, T>
impl<'a, 'b, T> Iterator for CSliceIter<'a, 'b, T> type Item = &'b T;
[src]
Notable traits for CSliceIter<'a, 'b, T>
impl<'a, 'b, T> Iterator for CSliceIter<'a, 'b, T> type Item = &'b T;
Returns an iterator over CSlice
.
Example
use c_vec::CSlice; let slice = &[0, 1, 2]; let ptr = slice.as_ptr(); let cslice = unsafe { CSlice::new(ptr, slice.len()) }; for elem in cslice.iter() { println!("=> {}", elem); }
Trait Implementations
impl<'a, T> AsRef<[T]> for CSlice<'a, T>
[src]
impl<'a, T> Index<usize> for CSlice<'a, T>
[src]
impl<'a, T: Clone> Into<Vec<T>> for CSlice<'a, T>
[src]
Auto Trait Implementations
impl<'a, T> RefUnwindSafe for CSlice<'a, T> where
T: RefUnwindSafe,
T: RefUnwindSafe,
impl<'a, T> !Send for CSlice<'a, T>
impl<'a, T> !Sync for CSlice<'a, T>
impl<'a, T> Unpin for CSlice<'a, T>
impl<'a, T> UnwindSafe for CSlice<'a, T> where
T: RefUnwindSafe,
T: RefUnwindSafe,
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,