Ptr

Struct Ptr 

Source
pub struct Ptr<'a, T: 'a> { /* private fields */ }
Expand description

A thread-safe pointer wrapper for shared mutable access.

Ptr provides a way to safely share mutable references across threads using atomic operations. It wraps an AtomicPtr and provides methods to access the underlying data safely.

§Type Parameters

  • 'a - Lifetime parameter for the reference
  • T - Type of the data being pointed to

§Safety

This type uses unsafe operations internally but provides a safe interface. The caller must ensure that the pointer remains valid for the lifetime 'a.

§Example

use plux_rs::utils::Ptr;

let mut data = 42;
let ptr = Ptr::new(&mut data);

// Access as immutable reference
let value = ptr.as_ref();
assert_eq!(*value, 42);

// Access as mutable reference
let mut_ref = ptr.as_mut();
*mut_ref = 24;
assert_eq!(*ptr.as_ref(), 24);

Implementations§

Source§

impl<'a, T> Ptr<'a, T>

Source

pub const fn new(value: *mut T) -> Self

Creates a new Ptr from a mutable pointer.

§Parameters
  • value - Raw mutable pointer to the data
§Returns

Returns a new Ptr instance.

§Safety

The caller must ensure that the pointer remains valid for the lifetime 'a and that no other mutable references to the same data exist.

Source

pub fn as_ptr(&self) -> *mut T

Returns the raw pointer.

§Returns

Returns the underlying *mut T pointer.

Source

pub fn as_ref(&self) -> &T

Returns an immutable reference to the data.

§Returns

Returns &T to the underlying data.

§Safety

This method is safe as long as the original pointer was valid and no mutable references are being used concurrently.

Source

pub fn as_mut(&self) -> &mut T

Returns a mutable reference to the data.

§Returns

Returns &mut T to the underlying data.

§Safety

This method is safe as long as the original pointer was valid and no other references (mutable or immutable) are being used concurrently.

Trait Implementations§

Source§

impl<'a, T: Debug + 'a> Debug for Ptr<'a, T>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<'a, T> !Freeze for Ptr<'a, T>

§

impl<'a, T> RefUnwindSafe for Ptr<'a, T>
where T: RefUnwindSafe,

§

impl<'a, T> Send for Ptr<'a, T>
where T: Sync,

§

impl<'a, T> Sync for Ptr<'a, T>
where T: Sync,

§

impl<'a, T> Unpin for Ptr<'a, T>

§

impl<'a, T> UnwindSafe for Ptr<'a, T>
where T: RefUnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.