Struct runestick::BorrowRef [−][src]
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]
M: FnOnce(&T) -> &U,
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]
M: FnOnce(&T) -> Option<&U>,
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]
T: Debug,
impl<T: ?Sized> Deref for BorrowRef<'_, T>
[src]
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]
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,
pub 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.
pub 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>,