pub struct PyCFunction(/* private fields */);Expand description
Represents a builtin Python function object.
Values of this type are accessed via PyO3’s smart pointers, e.g. as
Py<PyCFunction> or Bound<'py, PyCFunction>.
Implementations§
Source§impl PyCFunction
impl PyCFunction
Sourcepub fn new_with_keywords<'py>(
py: Python<'py>,
fun: PyCFunctionWithKeywords,
name: &'static CStr,
doc: &'static CStr,
module: Option<&Bound<'py, PyModule>>,
) -> PyResult<Bound<'py, Self>>
pub fn new_with_keywords<'py>( py: Python<'py>, fun: PyCFunctionWithKeywords, name: &'static CStr, doc: &'static CStr, module: Option<&Bound<'py, PyModule>>, ) -> PyResult<Bound<'py, Self>>
Create a new built-in function with keywords (*args and/or **kwargs).
To create name and doc static strings on Rust versions older than 1.77 (which added c““ literals),
use the c_str! macro.
Sourcepub fn new_with_keywords_bound<'py>(
py: Python<'py>,
fun: PyCFunctionWithKeywords,
name: &'static CStr,
doc: &'static CStr,
module: Option<&Bound<'py, PyModule>>,
) -> PyResult<Bound<'py, Self>>
👎Deprecated since 0.23.0: renamed to PyCFunction::new_with_keywords
pub fn new_with_keywords_bound<'py>( py: Python<'py>, fun: PyCFunctionWithKeywords, name: &'static CStr, doc: &'static CStr, module: Option<&Bound<'py, PyModule>>, ) -> PyResult<Bound<'py, Self>>
PyCFunction::new_with_keywordsDeprecated name for PyCFunction::new_with_keywords.
Sourcepub fn new<'py>(
py: Python<'py>,
fun: PyCFunction,
name: &'static CStr,
doc: &'static CStr,
module: Option<&Bound<'py, PyModule>>,
) -> PyResult<Bound<'py, Self>>
pub fn new<'py>( py: Python<'py>, fun: PyCFunction, name: &'static CStr, doc: &'static CStr, module: Option<&Bound<'py, PyModule>>, ) -> PyResult<Bound<'py, Self>>
Create a new built-in function which takes no arguments.
To create name and doc static strings on Rust versions older than 1.77 (which added c““ literals),
use the c_str! macro.
Sourcepub fn new_bound<'py>(
py: Python<'py>,
fun: PyCFunction,
name: &'static CStr,
doc: &'static CStr,
module: Option<&Bound<'py, PyModule>>,
) -> PyResult<Bound<'py, Self>>
👎Deprecated since 0.23.0: renamed to PyCFunction::new
pub fn new_bound<'py>( py: Python<'py>, fun: PyCFunction, name: &'static CStr, doc: &'static CStr, module: Option<&Bound<'py, PyModule>>, ) -> PyResult<Bound<'py, Self>>
PyCFunction::newDeprecated name for PyCFunction::new.
Sourcepub fn new_closure<'py, F, R>(
py: Python<'py>,
name: Option<&'static CStr>,
doc: Option<&'static CStr>,
closure: F,
) -> PyResult<Bound<'py, Self>>
pub fn new_closure<'py, F, R>( py: Python<'py>, name: Option<&'static CStr>, doc: Option<&'static CStr>, closure: F, ) -> PyResult<Bound<'py, Self>>
Create a new function from a closure.
§Examples
Python::with_gil(|py| {
let add_one = |args: &Bound<'_, PyTuple>, _kwargs: Option<&Bound<'_, PyDict>>| -> PyResult<_> {
let i = args.extract::<(i64,)>()?.0;
Ok(i+1)
};
let add_one = PyCFunction::new_closure(py, None, None, add_one).unwrap();
py_run!(py, add_one, "assert add_one(42) == 43");
});Sourcepub fn new_closure_bound<'py, F, R>(
py: Python<'py>,
name: Option<&'static CStr>,
doc: Option<&'static CStr>,
closure: F,
) -> PyResult<Bound<'py, Self>>
👎Deprecated since 0.23.0: renamed to PyCFunction::new_closure
pub fn new_closure_bound<'py, F, R>( py: Python<'py>, name: Option<&'static CStr>, doc: Option<&'static CStr>, closure: F, ) -> PyResult<Bound<'py, Self>>
PyCFunction::new_closureDeprecated name for PyCFunction::new_closure.
Trait Implementations§
Source§impl PyTypeInfo for PyCFunction
impl PyTypeInfo for PyCFunction
Source§fn type_object_raw(py: Python<'_>) -> *mut PyTypeObject
fn type_object_raw(py: Python<'_>) -> *mut PyTypeObject
Returns the PyTypeObject instance for this type.
Source§fn is_type_of(obj: &Bound<'_, PyAny>) -> bool
fn is_type_of(obj: &Bound<'_, PyAny>) -> bool
Checks if
object is an instance of this type or a subclass of this type.Source§fn type_object(py: Python<'_>) -> Bound<'_, PyType>
fn type_object(py: Python<'_>) -> Bound<'_, PyType>
Returns the safe abstraction over the type object.
Source§fn type_object_bound(py: Python<'_>) -> Bound<'_, PyType>
fn type_object_bound(py: Python<'_>) -> Bound<'_, PyType>
👎Deprecated since 0.23.0: renamed to
PyTypeInfo::type_objectDeprecated name for
PyTypeInfo::type_object.Source§fn is_type_of_bound(object: &Bound<'_, PyAny>) -> bool
fn is_type_of_bound(object: &Bound<'_, PyAny>) -> bool
👎Deprecated since 0.23.0: renamed to
PyTypeInfo::is_type_ofDeprecated name for
PyTypeInfo::is_type_of.Source§fn is_exact_type_of(object: &Bound<'_, PyAny>) -> bool
fn is_exact_type_of(object: &Bound<'_, PyAny>) -> bool
Checks if
object is an instance of this type.Source§fn is_exact_type_of_bound(object: &Bound<'_, PyAny>) -> bool
fn is_exact_type_of_bound(object: &Bound<'_, PyAny>) -> bool
👎Deprecated since 0.23.0: renamed to
PyTypeInfo::is_exact_type_ofDeprecated name for
PyTypeInfo::is_exact_type_of.impl DerefToPyAny for PyCFunction
Auto Trait Implementations§
impl !Freeze for PyCFunction
impl !RefUnwindSafe for PyCFunction
impl !Send for PyCFunction
impl !Sync for PyCFunction
impl Unpin for PyCFunction
impl UnwindSafe for PyCFunction
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
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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