Skip to main content

PrimOp

Struct PrimOp 

Source
pub struct PrimOp { /* private fields */ }
Expand description

A Nix primitive operation (primop) wrapping a Rust closure.

After construction with PrimOp::new, the primop can be:

Implementations§

Source§

impl PrimOp

Source

pub fn new<F>( context: &Arc<Context>, name: &str, arity: u32, doc: Option<&str>, f: F, ) -> Result<Self>
where F: Fn(&[PrimOpArg<'_>], &mut PrimOpRet<'_>) -> Result<()> + Send + Sync + 'static,

Create a new primop backed by the given Rust closure.

§Arguments
  • context: the Nix context.
  • name: the name of the primop as it will appear in Nix.
  • arity: number of arguments the primop accepts.
  • doc: optional documentation string.
  • f: the Rust closure to invoke.
§Errors

Returns an error if the name or doc string contains an interior NUL byte, or if the underlying allocation fails.

Source

pub fn register(self, context: &Context) -> Result<()>

Register this primop as a global Nix builtin.

After this call the primop will appear in builtins.* for all EvalState instances created after this call.

This consumes self; the underlying pointer is transferred to the global registry and is no longer accessible.

§Errors

Returns an error if the registration fails.

Source

pub fn into_value(self, state: &EvalState) -> Result<Value<'_>>

Embed this primop in a Nix value, returning a callable Value.

This consumes self. The returned value holds a GC reference to the primop, keeping it alive for the lifetime of the value.

§Errors

Returns an error if the value allocation or initialisation fails.

Trait Implementations§

Source§

impl Drop for PrimOp

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

impl Send for PrimOp

Auto Trait Implementations§

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