Struct rquickjs::function::OnceFn

source ·
pub struct OnceFn<T>(pub Cell<Option<T>>);
Expand description

Helper type for creating a function from a closure which implements FnMut

When called through [CellFn] will take the internal value leaving it empty. If the internal value was already empty it will return a error.

Tuple Fields§

§0: Cell<Option<T>>

Implementations§

source§

impl<T> OnceFn<T>

source

pub fn new(t: T) -> OnceFn<T>

Methods from Deref<Target = Cell<Option<F>>>§

1.0.0 · source

pub fn set(&self, val: T)

Sets the contained value.

Examples
use std::cell::Cell;

let c = Cell::new(5);

c.set(10);
1.17.0 · source

pub fn swap(&self, other: &Cell<T>)

Swaps the values of two Cells. Difference with std::mem::swap is that this function doesn’t require &mut reference.

Examples
use std::cell::Cell;

let c1 = Cell::new(5i32);
let c2 = Cell::new(10i32);
c1.swap(&c2);
assert_eq!(10, c1.get());
assert_eq!(5, c2.get());
1.17.0 · source

pub fn replace(&self, val: T) -> T

Replaces the contained value with val, and returns the old contained value.

Examples
use std::cell::Cell;

let cell = Cell::new(5);
assert_eq!(cell.get(), 5);
assert_eq!(cell.replace(10), 5);
assert_eq!(cell.get(), 10);
1.0.0 · source

pub fn get(&self) -> T

Returns a copy of the contained value.

Examples
use std::cell::Cell;

let c = Cell::new(5);

let five = c.get();
source

pub fn update<F>(&self, f: F) -> Twhere F: FnOnce(T) -> T,

🔬This is a nightly-only experimental API. (cell_update)

Updates the contained value using a function and returns the new value.

Examples
#![feature(cell_update)]

use std::cell::Cell;

let c = Cell::new(5);
let new = c.update(|x| x + 1);

assert_eq!(new, 6);
assert_eq!(c.get(), 6);
1.12.0 · source

pub fn as_ptr(&self) -> *mut T

Returns a raw pointer to the underlying data in this cell.

Examples
use std::cell::Cell;

let c = Cell::new(5);

let ptr = c.as_ptr();
1.17.0 · source

pub fn take(&self) -> T

Takes the value of the cell, leaving Default::default() in its place.

Examples
use std::cell::Cell;

let c = Cell::new(5);
let five = c.take();

assert_eq!(five, 5);
assert_eq!(c.into_inner(), 0);
1.37.0 · source

pub fn as_slice_of_cells(&self) -> &[Cell<T>]

Returns a &[Cell<T>] from a &Cell<[T]>

Examples
use std::cell::Cell;

let slice: &mut [i32] = &mut [1, 2, 3];
let cell_slice: &Cell<[i32]> = Cell::from_mut(slice);
let slice_cell: &[Cell<i32>] = cell_slice.as_slice_of_cells();

assert_eq!(slice_cell.len(), 3);
source

pub fn as_array_of_cells(&self) -> &[Cell<T>; N]

🔬This is a nightly-only experimental API. (as_array_of_cells)

Returns a &[Cell<T>; N] from a &Cell<[T; N]>

Examples
#![feature(as_array_of_cells)]
use std::cell::Cell;

let mut array: [i32; 3] = [1, 2, 3];
let cell_array: &Cell<[i32; 3]> = Cell::from_mut(&mut array);
let array_cell: &[Cell<i32>; 3] = cell_array.as_array_of_cells();

Trait Implementations§

source§

impl<F> AsRef<Cell<Option<F>>> for OnceFn<F>

source§

fn as_ref(&self) -> &Cell<Option<F>>

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

impl<F> Deref for OnceFn<F>

§

type Target = Cell<Option<F>>

The resulting type after dereferencing.
source§

fn deref(&self) -> &<OnceFn<F> as Deref>::Target

Dereferences the value.
source§

impl<T> From<T> for OnceFn<T>

source§

fn from(value: T) -> OnceFn<T>

Converts to this type from the input type.
source§

impl<'js, R, Fun> IntoJsFunc<'js, ()> for OnceFn<Fun>where Fun: FnOnce() -> R + 'js, (): FromParams<'js> + 'js, R: IntoJs<'js> + 'js,

source§

fn param_requirements() -> ParamRequirement

Returns the requirements this function has for the set of arguments used to call this function.
source§

fn call(&self, params: Params<'_, 'js>) -> Result<Value<'js>, Error>

Call the function with the given parameters.
source§

impl<'js, R, Fun, A> IntoJsFunc<'js, (A,)> for OnceFn<Fun>where Fun: FnOnce(A) -> R + 'js, (A,): FromParams<'js> + 'js, R: IntoJs<'js> + 'js,

source§

fn param_requirements() -> ParamRequirement

Returns the requirements this function has for the set of arguments used to call this function.
source§

fn call(&self, params: Params<'_, 'js>) -> Result<Value<'js>, Error>

Call the function with the given parameters.
source§

impl<'js, R, Fun, A, B> IntoJsFunc<'js, (A, B)> for OnceFn<Fun>where Fun: FnOnce(A, B) -> R + 'js, (A, B): FromParams<'js> + 'js, R: IntoJs<'js> + 'js,

source§

fn param_requirements() -> ParamRequirement

Returns the requirements this function has for the set of arguments used to call this function.
source§

fn call(&self, params: Params<'_, 'js>) -> Result<Value<'js>, Error>

Call the function with the given parameters.
source§

impl<'js, R, Fun, A, B, C> IntoJsFunc<'js, (A, B, C)> for OnceFn<Fun>where Fun: FnOnce(A, B, C) -> R + 'js, (A, B, C): FromParams<'js> + 'js, R: IntoJs<'js> + 'js,

source§

fn param_requirements() -> ParamRequirement

Returns the requirements this function has for the set of arguments used to call this function.
source§

fn call(&self, params: Params<'_, 'js>) -> Result<Value<'js>, Error>

Call the function with the given parameters.
source§

impl<'js, R, Fun, A, B, C, D> IntoJsFunc<'js, (A, B, C, D)> for OnceFn<Fun>where Fun: FnOnce(A, B, C, D) -> R + 'js, (A, B, C, D): FromParams<'js> + 'js, R: IntoJs<'js> + 'js,

source§

fn param_requirements() -> ParamRequirement

Returns the requirements this function has for the set of arguments used to call this function.
source§

fn call(&self, params: Params<'_, 'js>) -> Result<Value<'js>, Error>

Call the function with the given parameters.
source§

impl<'js, R, Fun, A, B, C, D, E> IntoJsFunc<'js, (A, B, C, D, E)> for OnceFn<Fun>where Fun: FnOnce(A, B, C, D, E) -> R + 'js, (A, B, C, D, E): FromParams<'js> + 'js, R: IntoJs<'js> + 'js,

source§

fn param_requirements() -> ParamRequirement

Returns the requirements this function has for the set of arguments used to call this function.
source§

fn call(&self, params: Params<'_, 'js>) -> Result<Value<'js>, Error>

Call the function with the given parameters.
source§

impl<'js, R, Fun, A, B, C, D, E, F> IntoJsFunc<'js, (A, B, C, D, E, F)> for OnceFn<Fun>where Fun: FnOnce(A, B, C, D, E, F) -> R + 'js, (A, B, C, D, E, F): FromParams<'js> + 'js, R: IntoJs<'js> + 'js,

source§

fn param_requirements() -> ParamRequirement

Returns the requirements this function has for the set of arguments used to call this function.
source§

fn call(&self, params: Params<'_, 'js>) -> Result<Value<'js>, Error>

Call the function with the given parameters.
source§

impl<'js, R, Fun, A, B, C, D, E, F, G> IntoJsFunc<'js, (A, B, C, D, E, F, G)> for OnceFn<Fun>where Fun: FnOnce(A, B, C, D, E, F, G) -> R + 'js, (A, B, C, D, E, F, G): FromParams<'js> + 'js, R: IntoJs<'js> + 'js,

source§

fn param_requirements() -> ParamRequirement

Returns the requirements this function has for the set of arguments used to call this function.
source§

fn call(&self, params: Params<'_, 'js>) -> Result<Value<'js>, Error>

Call the function with the given parameters.
source§

impl<'js, R, Fun, A, B, C, D, E, F, G, H> IntoJsFunc<'js, (A, B, C, D, E, F, G, H)> for OnceFn<Fun>where Fun: FnOnce(A, B, C, D, E, F, G, H) -> R + 'js, (A, B, C, D, E, F, G, H): FromParams<'js> + 'js, R: IntoJs<'js> + 'js,

source§

fn param_requirements() -> ParamRequirement

Returns the requirements this function has for the set of arguments used to call this function.
source§

fn call(&self, params: Params<'_, 'js>) -> Result<Value<'js>, Error>

Call the function with the given parameters.

Auto Trait Implementations§

§

impl<T> !RefUnwindSafe for OnceFn<T>

§

impl<T> Send for OnceFn<T>where T: Send,

§

impl<T> !Sync for OnceFn<T>

§

impl<T> Unpin for OnceFn<T>where T: Unpin,

§

impl<T> UnwindSafe for OnceFn<T>where T: UnwindSafe,

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> 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
source§

impl<T> From<!> for T

source§

fn from(t: !) -> T

Converts to this type from the input type.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

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

impl<T> ParallelSend for Twhere T: Send,