Skip to main content

PyRef

Struct PyRef 

Source
pub struct PyRef<T> { /* private fields */ }
Expand description

A reference to a Python object.

Note that a PyRef<T> can only deref to a shared / immutable reference. It is the payload type’s responsibility to handle (possibly concurrent) mutability with locks or concurrent data structures if required.

A PyRef<T> can be directly returned from a built-in function to handle situations (such as when implementing in-place methods such as __iadd__) where a reference to the same object must be returned.

Implementations§

Source§

impl PyRef<PyStr>

Source

pub fn is_empty(&self) -> bool

Source

pub fn concat_in_place(&mut self, other: &Wtf8, vm: &VirtualMachine)

Source

pub fn try_into_utf8(self, vm: &VirtualMachine) -> PyResult<PyRef<PyUtf8Str>>

Source§

impl PyRef<PyUtf8Str>

Source

pub fn into_wtf8(self) -> PyStrRef

Convert to PyStrRef. Safe because PyUtf8Str is a subtype of PyStr.

Source§

impl PyRef<PyTraceback>

Source

pub fn iter(&self) -> impl Iterator<Item = Self>

Source§

impl PyRef<PyTuple<PyObjectRef>>

Source§

impl<T: PyPayload> PyRef<PyTuple<PyRef<T>>>

Source§

impl<T: PyPayload> PyRef<T>

Source

pub const fn leak(pyref: Self) -> &'static Py<T>

Source§

impl<T: PyPayload + MaybeTraverse + Debug> PyRef<T>

Source

pub fn new_ref(payload: T, typ: PyTypeRef, dict: Option<PyDictRef>) -> Self

Source§

impl<T: PySubclass + Debug> PyRef<T>
where T::Base: Debug,

Source

pub fn into_base(self) -> PyRef<T::Base>

Converts this reference to the base type (ownership transfer).

§Safety

T and T::Base must have compatible layouts in size_of::<T::Base>() bytes.

Source

pub fn upcast<U: PyPayload + StaticType>(self) -> PyRef<U>
where T: StaticType,

Source§

impl<T: PyPayload> PyRef<T>

Source

pub fn into_exact_or( self, ctx: &Context, f: impl FnOnce(Self) -> PyRefExact<T>, ) -> PyRefExact<T>

Source§

impl PyRef<VecBuffer>

Methods from Deref<Target = Py<T>>§

Source

pub fn downgrade( &self, callback: Option<PyObjectRef>, vm: &VirtualMachine, ) -> PyResult<PyWeakRef<T>>

Source

pub fn payload(&self) -> &T

Source

pub fn to_base(&self) -> &Py<T::Base>

Converts &Py<T> to &Py<T::Base>.

Source

pub fn upcast_ref<U: PyPayload + StaticType>(&self) -> &Py<U>
where T: StaticType,

Converts &Py<T> to &Py<U> where U is an ancestor type.

Trait Implementations§

Source§

impl<T> AsRef<Py<T>> for PyRef<T>

Source§

fn as_ref(&self) -> &Py<T>

Converts this type into a shared reference of the (usually inferred) input type.
Source§

impl<T> AsRef<PyObject> for PyRef<T>
where T: PyPayload,

Source§

fn as_ref(&self) -> &PyObject

Converts this type into a shared reference of the (usually inferred) input type.
Source§

impl AsRef<PyRef<PyInt>> for ArgIndex

Source§

fn as_ref(&self) -> &PyIntRef

Converts this type into a shared reference of the (usually inferred) input type.
Source§

impl<T> Borrow<Py<T>> for PyRef<T>

Source§

fn borrow(&self) -> &Py<T>

Immutably borrows from an owned value. Read more
Source§

impl<T> Borrow<PyObject> for PyRef<T>
where T: PyPayload,

Source§

fn borrow(&self) -> &PyObject

Immutably borrows from an owned value. Read more
Source§

impl<T> Clone for PyRef<T>

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<T: Debug> Debug for PyRef<T>

Source§

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

Formats the value using the given formatter. Read more
Source§

impl<T> Deref for PyRef<T>

Source§

type Target = Py<T>

The resulting type after dereferencing.
Source§

fn deref(&self) -> &Py<T>

Dereferences the value.
Source§

impl<T> Display for PyRef<T>
where T: PyPayload + Display,

Source§

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

Formats the value using the given formatter. Read more
Source§

impl<T> Drop for PyRef<T>

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

impl From<PyRef<PyBaseException>> for ArgumentError

Source§

fn from(ex: PyBaseExceptionRef) -> Self

Converts to this type from the input type.
Source§

impl From<PyRef<PyDict>> for PyMappingProxy

Source§

fn from(dict: PyDictRef) -> Self

Converts to this type from the input type.
Source§

impl<T: PyPayload> From<PyRef<PyTuple<PyRef<T>>>> for PyTupleRef

Source§

fn from(tup: PyRef<PyTuple<PyRef<T>>>) -> Self

Converts to this type from the input type.
Source§

impl From<PyRef<PyType>> for PyMappingProxy

Source§

fn from(dict: PyTypeRef) -> Self

Converts to this type from the input type.
Source§

impl From<PyRef<PyUtf8Str>> for PyRef<PyStr>

Source§

fn from(s: PyRef<PyUtf8Str>) -> Self

Converts to this type from the input type.
Source§

impl<T: PyPayload> From<PyRef<T>> for PyAtomicRef<T>

Source§

fn from(pyref: PyRef<T>) -> Self

Converts to this type from the input type.
Source§

impl<T> From<PyRef<T>> for PyObjectRef

Source§

fn from(value: PyRef<T>) -> Self

Converts to this type from the input type.
Source§

impl<T> Hash for PyRef<T>
where T: Hash + PyPayload,

Source§

fn hash<H: Hasher>(&self, state: &mut H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl<T> PartialEq for PyRef<T>
where T: PartialEq + PyPayload,

Source§

fn eq(&self, other: &Self) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<T: PyPayload> ToPyObject for PyRef<T>

Source§

impl<T: PyPayload> TransmuteFromObject for PyRef<T>

Source§

impl<T: PyObjectPayload> Traverse for PyRef<T>

Source§

fn traverse(&self, traverse_fn: &mut TraverseFn<'_>)

impl traverse() with caution! Following those guideline so traverse doesn’t cause memory error!: Read more
Source§

fn clear(&mut self, _out: &mut Vec<PyObjectRef>)

Extract all owned child PyObjectRefs for circular reference resolution (tp_clear). Called just before object deallocation to break circular references. Default implementation does nothing.
Source§

impl<T> TryFromObject for PyRef<T>
where T: PyPayload,

Source§

fn try_from_object(vm: &VirtualMachine, obj: PyObjectRef) -> PyResult<Self>

Attempt to convert a Python object to a value of this type.
Source§

impl<T> Eq for PyRef<T>
where T: Eq + PyPayload,

Auto Trait Implementations§

§

impl<T> Freeze for PyRef<T>

§

impl<T> !RefUnwindSafe for PyRef<T>

§

impl<T> !Send for PyRef<T>

§

impl<T> !Sync for PyRef<T>

§

impl<T> Unpin for PyRef<T>

§

impl<T> UnsafeUnpin for PyRef<T>

§

impl<T> !UnwindSafe for PyRef<T>

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> AsObject for T
where T: Borrow<PyObject>,

Source§

fn as_object(&self) -> &PyObject

Source§

fn get_id(&self) -> usize

Source§

fn is<T>(&self, other: &T) -> bool
where T: AsObject,

Source§

fn class(&self) -> &Py<PyType>

Source§

fn get_class_attr( &self, attr_name: &'static PyStrInterned, ) -> Option<PyObjectRef>

Source§

fn fast_isinstance(&self, cls: &Py<PyType>) -> bool

Determines if obj actually an instance of cls, this doesn’t call instancecheck, so only use this if cls is known to have not overridden the base instancecheck magic method.
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> Candidate for T
where T: AsRef<str>,

Source§

fn display(&self) -> &str

Text to display when listing alternatives.
Source§

fn replacement(&self) -> &str

Text to insert in line.
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

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

Source§

fn exact_from(value: T) -> U

Source§

impl<T, U> ExactInto<U> for T
where U: ExactFrom<T>,

Source§

fn exact_into(self) -> U

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FromArgOptional for T
where T: TryFromObject,

Source§

type Inner = T

Source§

fn from_inner(x: T) -> T

Source§

impl<T> FromArgs for T
where T: TryFromObject,

Source§

fn arity() -> RangeInclusive<usize>

The range of positional arguments permitted by the function signature. Read more
Source§

fn from_args( vm: &VirtualMachine, args: &mut FuncArgs, ) -> Result<T, ArgumentError>

Extracts this item from the next argument(s).
Source§

impl<T> Hint for T
where T: AsRef<str>,

Source§

fn display(&self) -> &str

Text to display when hint is active
Source§

fn completion(&self) -> Option<&str>

Text to insert in line when right arrow is pressed
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> IntoObject for T
where T: Into<PyObjectRef>,

Source§

impl<T, U> OverflowingInto<U> for T
where U: OverflowingFrom<T>,

Source§

impl<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
Source§

impl<T, U> RoundingInto<U> for T
where U: RoundingFrom<T>,

Source§

impl<T, U> SaturatingInto<U> for T
where U: SaturatingFrom<T>,

Source§

impl<T> ToCompactString for T
where T: Display,

Source§

impl<T> ToDebugString for T
where T: Debug,

Source§

fn to_debug_string(&self) -> String

Returns the String produced by Ts Debug implementation.

§Examples
use malachite_base::strings::ToDebugString;

assert_eq!([1, 2, 3].to_debug_string(), "[1, 2, 3]");
assert_eq!(
    [vec![2, 3], vec![], vec![4]].to_debug_string(),
    "[[2, 3], [], [4]]"
);
assert_eq!(Some(5).to_debug_string(), "Some(5)");
Source§

impl<T> ToHex for T
where T: AsRef<[u8]>,

Source§

fn encode_hex<U>(&self) -> U
where U: FromIterator<char>,

Encode the hex strict representing self into the result. Lower case letters are used (e.g. f9b4ca)
Source§

fn encode_hex_upper<U>(&self) -> U
where U: FromIterator<char>,

Encode the hex strict representing self into the result. Upper case letters are used (e.g. F9B4CA)
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T> ToPyResult for T
where T: ToPyObject,

Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
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.
Source§

impl<T, U> WrappingInto<U> for T
where U: WrappingFrom<T>,

Source§

fn wrapping_into(self) -> U

Source§

impl<T> PyThreadingConstraint for T