Struct rustpython_vm::object::PyRef

source ·
pub struct PyRef<T: PyObjectPayload> { /* 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 concat_in_place(&mut self, other: &str, vm: &VirtualMachine)

source§

impl PyRef<PyTraceback>

source

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

source§

impl<T: PyObjectPayload> PyRef<T>

source

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

source

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

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 to_attributes( &self, vm: &VirtualMachine ) -> IndexMap<&'static PyStrInterned, PyObjectRef, RandomState>

Take a python dictionary and convert it to attributes.

source

pub fn get_item_opt<K: DictKey + ?Sized>( &self, key: &K, vm: &VirtualMachine ) -> PyResult<Option<PyObjectRef>>

source

pub fn get_item<K: DictKey + ?Sized>( &self, key: &K, vm: &VirtualMachine ) -> PyResult

source

pub fn set_item<K: DictKey + ?Sized>( &self, key: &K, value: PyObjectRef, vm: &VirtualMachine ) -> PyResult<()>

source

pub fn del_item<K: DictKey + ?Sized>( &self, key: &K, vm: &VirtualMachine ) -> PyResult<()>

source

pub fn get_chain<K: DictKey + ?Sized>( &self, other: &Self, key: &K, vm: &VirtualMachine ) -> PyResult<Option<PyObjectRef>>

source

pub fn f_back(&self, vm: &VirtualMachine) -> Option<PyRef<Frame>>

source

pub fn __init_methods(&self, vm: &VirtualMachine) -> PyResult<()>

source

pub fn dict(&self) -> PyDictRef

source

pub fn get_attr<'a>( &self, attr_name: impl AsPyStr<'a>, vm: &VirtualMachine ) -> PyResult

source

pub fn set_attr<'a>( &self, attr_name: impl AsPyStr<'a>, attr_value: impl Into<PyObjectRef>, vm: &VirtualMachine ) -> PyResult<()>

source

pub fn fast_issubclass(&self, cls: &impl Borrow<PyObject>) -> bool

Determines if subclass is actually a subclass of cls, this doesn’t call subclasscheck, so only use this if cls is known to have not overridden the base subclasscheck magic method.

source

pub fn iter_mro(&self) -> impl DoubleEndedIterator<Item = &Py<PyType>>

source

pub fn iter_base_chain(&self) -> impl Iterator<Item = &Py<PyType>>

source

pub fn extend_methods( &'static self, method_defs: &'static [PyMethodDef], ctx: &Context )

source

pub fn run(&self, vm: &VirtualMachine) -> PyResult<ExecutionResult>

source

pub fn yield_from_target(&self) -> Option<PyObjectRef>

source

pub fn is_internal_frame(&self) -> bool

source

pub fn next_external_frame(&self, vm: &VirtualMachine) -> Option<FrameRef>

source

pub fn build_function(&self, vm: &VirtualMachine) -> PyRef<PyNativeFunction>

source

pub fn build_method( &self, class: &'static Py<PyType>, vm: &VirtualMachine ) -> PyRef<PyMethodDescriptor>

source

pub fn upgrade(&self) -> Option<PyObjectRef>

source

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

Trait Implementations§

source§

impl<T> AsRef<Py<T>> for PyRef<T>
where T: PyObjectPayload,

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: PyObjectPayload,

source§

fn as_ref(&self) -> &PyObject

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

impl<T> Borrow<Py<T>> for PyRef<T>
where T: PyObjectPayload,

source§

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

Immutably borrows from an owned value. Read more
source§

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

source§

fn borrow(&self) -> &PyObject

Immutably borrows from an owned value. Read more
source§

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

source§

fn clone(&self) -> Self

Returns a copy 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: PyObjectPayload> 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>
where T: PyObjectPayload,

§

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>

source§

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

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

impl<T: PyObjectPayload> 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 From<PyRef<PyType>> for PyMappingProxy

source§

fn from(dict: PyTypeRef) -> Self

Converts to this type from the input type.
source§

impl<T: PyObjectPayload> 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
where T: PyObjectPayload,

source§

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

Converts to this type from the input type.
source§

impl<T: PyObjectPayload> 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§

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.

Auto Trait Implementations§

§

impl<T> Freeze for PyRef<T>
where T: PyThreadingConstraint + MaybeTraverse + Debug + Any + 'static,

§

impl<T> !RefUnwindSafe for PyRef<T>

§

impl<T> !Send for PyRef<T>

§

impl<T> !Sync for PyRef<T>

§

impl<T> Unpin for PyRef<T>
where T: PyThreadingConstraint + MaybeTraverse + Debug + Any + 'static,

§

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, 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,

§

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, 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> IntoObject for T
where T: Into<PyObjectRef>,

source§

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

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> 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,

§

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§

default 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>,

§

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>,

§

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<V, T> VZip<V> for T
where V: MultiLane<T>,

source§

fn vzip(self) -> V

source§

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

source§

fn wrapping_into(self) -> U

source§

impl<T> PyThreadingConstraint for T