pub struct BorrowedPointer<'a, P, T: 'a> { /* private fields */ }Expand description
A pointer whose contents were borrowed from a Rust object, and therefore whose lifetime is limited to the lifetime of the underlying Rust object. The Rust object was borrowed from a shared reference, and therefore the pointer is not mutable.
Implementations§
Source§impl<'a, P, T: 'a> BorrowedPointer<'a, P, T>
impl<'a, P, T: 'a> BorrowedPointer<'a, P, T>
Sourcepub unsafe fn new(ptr: *const P, storage: T) -> Self
pub unsafe fn new(ptr: *const P, storage: T) -> Self
Return a new BorrowedPointer that wraps the pointer ptr.
storage can contain any other data that ptr points to,
and that should be dropped when the BorrowedPointer goes out
of scope.
§Safety
The pointer must be valid for the lifetime of the BorrowedPointer.
If the pointer points into the storage, T must be pinned.
Source§impl<'a, T: CloneToForeign + ?Sized + 'a> BorrowedPointer<'a, T::Foreign, &T>
impl<'a, T: CloneToForeign + ?Sized + 'a> BorrowedPointer<'a, T::Foreign, &T>
Sourcepub fn to_owned(&self) -> OwnedPointer<T>
pub fn to_owned(&self) -> OwnedPointer<T>
Clone the underlying data for the receiver, creating a new C datum that contains the same data.
let s = CString::new("Hello, world!").unwrap();
assert_eq!(s.borrow_foreign().as_ptr(), s.as_ptr());
assert_ne!(s.borrow_foreign().to_owned().as_ptr(), s.as_ptr());let s: i8 = 42;
assert_eq!(s.borrow_foreign().as_ptr(), &s as *const _);
assert_ne!(s.borrow_foreign().to_owned().as_ptr(), &s as *const _);Trait Implementations§
Auto Trait Implementations§
impl<'a, P, T> Freeze for BorrowedPointer<'a, P, T>where
T: Freeze,
impl<'a, P, T> RefUnwindSafe for BorrowedPointer<'a, P, T>where
T: RefUnwindSafe,
P: RefUnwindSafe,
impl<'a, P, T> !Send for BorrowedPointer<'a, P, T>
impl<'a, P, T> !Sync for BorrowedPointer<'a, P, T>
impl<'a, P, T> Unpin for BorrowedPointer<'a, P, T>where
T: Unpin,
impl<'a, P, T> UnwindSafe for BorrowedPointer<'a, P, T>where
T: UnwindSafe,
P: RefUnwindSafe,
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