Struct runestick::BorrowRef[][src]

pub struct BorrowRef<'a, T: ?Sized + 'a> { /* fields omitted */ }

Guard for a data borrowed from a slot in the virtual machine.

These guards are necessary, since we need to guarantee certain forms of access depending on what we do. Releasing the guard releases the access.

Implementations

impl<'a, T: ?Sized> BorrowRef<'a, T>[src]

pub fn map<M, U: ?Sized>(this: Self, m: M) -> BorrowRef<'a, U> where
    M: FnOnce(&T) -> &U, 
[src]

Map the reference.

Examples

use runestick::{BorrowRef, Shared};

let vec = Shared::<Vec<u32>>::new(vec![1, 2, 3, 4]);
let vec = vec.borrow_ref()?;
let value: BorrowRef<[u32]> = BorrowRef::map(vec, |vec| &vec[0..2]);

assert_eq!(&*value, &[1u32, 2u32][..]);

pub fn try_map<M, U: ?Sized>(this: Self, m: M) -> Option<BorrowRef<'a, U>> where
    M: FnOnce(&T) -> Option<&U>, 
[src]

Try to map the reference to a projection.

Examples

use runestick::{BorrowRef, Shared};

let vec = Shared::<Vec<u32>>::new(vec![1, 2, 3, 4]);
let vec = vec.borrow_ref()?;
let mut value: Option<BorrowRef<[u32]>> = BorrowRef::try_map(vec, |vec| vec.get(0..2));

assert_eq!(value.as_deref(), Some(&[1u32, 2u32][..]));

Trait Implementations

impl<T: ?Sized> Debug for BorrowRef<'_, T> where
    T: Debug
[src]

impl<T: ?Sized> Deref for BorrowRef<'_, T>[src]

type Target = T

The resulting type after dereferencing.

Auto Trait Implementations

impl<'a, T> !RefUnwindSafe for BorrowRef<'a, T>

impl<'a, T> !Send for BorrowRef<'a, T>

impl<'a, T> !Sync for BorrowRef<'a, T>

impl<'a, T: ?Sized> Unpin for BorrowRef<'a, T>

impl<'a, T> !UnwindSafe for BorrowRef<'a, 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<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.