Struct rustpython_vm::object::PyRef

source ·
#[repr(transparent)]
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 Iterator<Item = &Py<PyType>> + DoubleEndedIterator

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

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 PyObjectRefwhere 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> !RefUnwindSafe for PyRef<T>

§

impl<T> !Send for PyRef<T>

§

impl<T> !Sync for PyRef<T>

§

impl<T> Unpin for PyRef<T>

§

impl<T> !UnwindSafe for PyRef<T>

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> AsObject for Twhere T: Borrow<PyObject>,

source§

fn as_object(&self) -> &PyObject

source§

fn get_id(&self) -> usize

source§

fn is<T>(&self, other: &T) -> boolwhere 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 Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
§

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

§

fn exact_from(value: T) -> U

§

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

§

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 Twhere T: TryFromObject,

§

type Inner = T

source§

fn from_inner(x: T) -> T

source§

impl<T> FromArgs for Twhere 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 Twhere 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 Twhere T: Into<PyObjectRef>,

§

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

§

fn overflowing_into(self) -> (U, bool)

§

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

§

fn rounding_into(self, rm: RoundingMode) -> U

source§

impl<T> Same<T> for T

§

type Output = T

Should always be Self
§

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

§

fn saturating_into(self) -> U

§

impl<T> ToDebugString for Twhere T: Debug,

§

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 Twhere T: AsRef<[u8]>,

source§

fn encode_hex<U>(&self) -> Uwhere 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) -> Uwhere 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 Twhere 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 Twhere T: ToPyObject,

source§

impl<T> ToString for Twhere 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 Twhere 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 Twhere 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.
§

impl<V, T> VZip<V> for Twhere V: MultiLane<T>,

§

fn vzip(self) -> V

§

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

§

fn wrapping_into(self) -> U

source§

impl<T> PyThreadingConstraint for T