Movatterモバイル変換


[0]ホーム

URL:


Docs.rs

NativeFunction

StructNativeFunction 

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

A callable Rust function that can be invoked by the engine.

NativeFunction functions are divided in two:

  • Function pointers a.k.a common functions (seeNativeFunctionPointer).
  • Closure functions that can capture the current environment.

§Caveats

By limitations of the Rust language, the garbage collector currently cannot inspect closuresin order to trace their captured variables. This means that onlyCopy closures are 100% safeto use. All other closures can also be stored in aNativeFunction, albeit by using anunsafeAPI, but note that passing closures implicitly capturing traceable types could causeUndefined Behaviour.

Implementations§

Source§

implNativeFunction

Source

pub fnfrom_fn_ptr(function:NativeFunctionPointer) -> Self

Creates aNativeFunction from a function pointer.

Source

pub fnfrom_async_fn<F>(f: F) -> Self
where F:AsyncFn(&JsValue, &[JsValue], &RefCell<&mutContext>) ->JsResult<JsValue> + 'static +Copy,

Creates aNativeFunction from a function returning aFuture-like.

The returnedNativeFunction will return an ECMAScriptPromise that will be fulfilledor rejected when the returnedFuture completes.

If you only need to convert aFuture-like into aJsPromise, seeJsPromise::from_async_fn.

§Examples
async fntest(    _this:&JsValue,    args:&[JsValue],    context:&RefCell<&mutContext>,) -> JsResult<JsValue> {letarg = args.get_or_undefined(0).clone();    std::future::ready(()).await;letvalue = arg.to_u32(&mutcontext.borrow_mut())?;Ok(JsValue::from(value *2))}NativeFunction::from_async_fn(test);
Source

pub fnfrom_copy_closure<F>(closure: F) -> Self
where F:Fn(&JsValue, &[JsValue], &mutContext) ->JsResult<JsValue> +Copy + 'static,

Creates aNativeFunction from aCopy closure.

Source

pub fnfrom_copy_closure_with_captures<F, T>(closure: F, captures: T) -> Self
where F:Fn(&JsValue, &[JsValue],&T, &mutContext) ->JsResult<JsValue> +Copy + 'static, T:Trace + 'static,

Creates aNativeFunction from aCopy closure and a list of traceable captures.

Source

pub unsafe fnfrom_closure<F>(closure: F) -> Self
where F:Fn(&JsValue, &[JsValue], &mutContext) ->JsResult<JsValue> + 'static,

Creates a newNativeFunction from a closure.

§Safety

Passing a closure that contains a captured variable that needs to be traced by the garbagecollector could cause an use after free, memory corruption or other kinds ofUndefinedBehaviour. Seehttps://github.com/Manishearth/rust-gc/issues/50 for a technical explanationon why that is the case.

Source

pub unsafe fnfrom_closure_with_captures<F, T>(closure: F, captures: T) -> Self
where F:Fn(&JsValue, &[JsValue],&T, &mutContext) ->JsResult<JsValue> + 'static, T:Trace + 'static,

Create a newNativeFunction from a closure and a list of traceable captures.

§Safety

Passing a closure that contains a captured variable that needs to be traced by the garbagecollector could cause an use after free, memory corruption or other kinds ofUndefinedBehaviour. Seehttps://github.com/Manishearth/rust-gc/issues/50 for a technical explanationon why that is the case.

Source

pub fncall( &self, this: &JsValue, args: &[JsValue], context: &mutContext,) ->JsResult<JsValue>

Calls thisNativeFunction, forwarding the arguments to the corresponding function.

Source

pub fnto_js_function(self, realm: &Realm) ->JsFunction

Converts thisNativeFunction into aJsFunction without setting its name or length.

Useful to create functions that will only be used once, such as callbacks.

Trait Implementations§

Source§

implClone forNativeFunction

Source§

fnclone(&self) ->NativeFunction

Returns a duplicate of the value.Read more
1.0.0 ·Source§

fnclone_from(&mut self, source: &Self)

Performs copy-assignment fromsource.Read more
Source§

implDebug forNativeFunction

Source§

fnfmt(&self, f: &mutFormatter<'_>) ->Result

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

implFinalize forNativeFunction

Source§

fnfinalize(&self)

Cleanup logic for a type.
Source§

implTrace forNativeFunction

Source§

unsafe fntrace(&self, tracer: &mut Tracer)

Marks all containedGcs.Read more
Source§

unsafe fntrace_non_roots(&self)

Trace handles located in GC heap, and mark them as non root.Read more
Source§

fnrun_finalizer(&self)

RunsFinalize::finalize on this object and allcontained subobjects.

Auto Trait Implementations§

§

implFreeze forNativeFunction

§

impl !RefUnwindSafe forNativeFunction

§

impl !Send forNativeFunction

§

impl !Sync forNativeFunction

§

implUnpin forNativeFunction

§

impl !UnwindSafe forNativeFunction

Blanket Implementations§

Source§

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

Source§

fntype_id(&self) ->TypeId

Gets theTypeId ofself.Read more
Source§

impl<T>Borrow<T> for T
where T: ?Sized,

Source§

fnborrow(&self) ->&T

Immutably borrows from an owned value.Read more
Source§

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

Source§

fnborrow_mut(&mut self) ->&mut T

Mutably borrows from an owned value.Read more
Source§

impl<T>CloneToUninit for T
where T:Clone,

Source§

unsafe fnclone_to_uninit(&self, dest:*mutu8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment fromself todest.Read more
Source§

impl<T>Conv for T

Source§

fnconv<T>(self) -> T
where Self:Into<T>,

Convertsself intoT usingInto<T>.Read more
Source§

impl<T>From<T> for T

Source§

fnfrom(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U>Into<U> for T
where U:From<T>,

Source§

fninto(self) -> U

CallsU::from(self).

That is, this conversion is whatever the implementation ofFrom<T> for U chooses to do.

Source§

impl<T>IntoEither for T

Source§

fninto_either(self, into_left:bool) ->Either<Self, Self>

Convertsself into aLeft variant ofEither<Self, Self>ifinto_left istrue.Convertsself into aRight variant ofEither<Self, Self>otherwise.Read more
Source§

fninto_either_with<F>(self, into_left: F) ->Either<Self, Self>
where F:FnOnce(&Self) ->bool,

Convertsself into aLeft variant ofEither<Self, Self>ifinto_left(&self) returnstrue.Convertsself into aRight variant ofEither<Self, Self>otherwise.Read more
Source§

impl<T>Pipe for T
where T: ?Sized,

Source§

fnpipe<R>(self, func: implFnOnce(Self) -> R) -> R
where Self:Sized,

Pipes by value. This is generally the method you want to use.Read more
Source§

fnpipe_ref<'a, R>(&'a self, func: implFnOnce(&'a Self) -> R) -> R
where R: 'a,

Borrowsself and passes that borrow into the pipe function.Read more
Source§

fnpipe_ref_mut<'a, R>(&'a mut self, func: implFnOnce(&'a mut Self) -> R) -> R
where R: 'a,

Mutably borrowsself and passes that borrow into the pipe function.Read more
Source§

fnpipe_borrow<'a, B, R>(&'a self, func: implFnOnce(&'a B) -> R) -> R
where Self:Borrow<B>, B: 'a + ?Sized, R: 'a,

Borrowsself, then passesself.borrow() into the pipe function.Read more
Source§

fnpipe_borrow_mut<'a, B, R>( &'a mut self, func: implFnOnce(&'a mut B) -> R,) -> R
where Self:BorrowMut<B>, B: 'a + ?Sized, R: 'a,

Mutably borrowsself, then passesself.borrow_mut() into the pipefunction.Read more
Source§

fnpipe_as_ref<'a, U, R>(&'a self, func: implFnOnce(&'a U) -> R) -> R
where Self:AsRef<U>, U: 'a + ?Sized, R: 'a,

Borrowsself, then passesself.as_ref() into the pipe function.
Source§

fnpipe_as_mut<'a, U, R>(&'a mut self, func: implFnOnce(&'a mut U) -> R) -> R
where Self:AsMut<U>, U: 'a + ?Sized, R: 'a,

Mutably borrowsself, then passesself.as_mut() into the pipefunction.
Source§

fnpipe_deref<'a, T, R>(&'a self, func: implFnOnce(&'a T) -> R) -> R
where Self:Deref<Target = T>, T: 'a + ?Sized, R: 'a,

Borrowsself, then passesself.deref() into the pipe function.
Source§

fnpipe_deref_mut<'a, T, R>( &'a mut self, func: implFnOnce(&'a mut T) -> R,) -> R
where Self:DerefMut<Target = T> +Deref, T: 'a + ?Sized, R: 'a,

Mutably borrowsself, then passesself.deref_mut() into the pipefunction.
Source§

impl<T>Tap for T

Source§

fntap(self, func: implFnOnce(&Self)) -> Self

Immutable access to a value.Read more
Source§

fntap_mut(self, func: implFnOnce(&mut Self)) -> Self

Mutable access to a value.Read more
Source§

fntap_borrow<B>(self, func: implFnOnce(&B)) -> Self
where Self:Borrow<B>, B: ?Sized,

Immutable access to theBorrow<B> of a value.Read more
Source§

fntap_borrow_mut<B>(self, func: implFnOnce(&mut B)) -> Self
where Self:BorrowMut<B>, B: ?Sized,

Mutable access to theBorrowMut<B> of a value.Read more
Source§

fntap_ref<R>(self, func: implFnOnce(&R)) -> Self
where Self:AsRef<R>, R: ?Sized,

Immutable access to theAsRef<R> view of a value.Read more
Source§

fntap_ref_mut<R>(self, func: implFnOnce(&mut R)) -> Self
where Self:AsMut<R>, R: ?Sized,

Mutable access to theAsMut<R> view of a value.Read more
Source§

fntap_deref<T>(self, func: implFnOnce(&T)) -> Self
where Self:Deref<Target = T>, T: ?Sized,

Immutable access to theDeref::Target of a value.Read more
Source§

fntap_deref_mut<T>(self, func: implFnOnce(&mut T)) -> Self
where Self:DerefMut<Target = T> +Deref, T: ?Sized,

Mutable access to theDeref::Target of a value.Read more
Source§

fntap_dbg(self, func: implFnOnce(&Self)) -> Self

Calls.tap() only in debug builds, and is erased in release builds.
Source§

fntap_mut_dbg(self, func: implFnOnce(&mut Self)) -> Self

Calls.tap_mut() only in debug builds, and is erased in releasebuilds.
Source§

fntap_borrow_dbg<B>(self, func: implFnOnce(&B)) -> Self
where Self:Borrow<B>, B: ?Sized,

Calls.tap_borrow() only in debug builds, and is erased in releasebuilds.
Source§

fntap_borrow_mut_dbg<B>(self, func: implFnOnce(&mut B)) -> Self
where Self:BorrowMut<B>, B: ?Sized,

Calls.tap_borrow_mut() only in debug builds, and is erased in releasebuilds.
Source§

fntap_ref_dbg<R>(self, func: implFnOnce(&R)) -> Self
where Self:AsRef<R>, R: ?Sized,

Calls.tap_ref() only in debug builds, and is erased in releasebuilds.
Source§

fntap_ref_mut_dbg<R>(self, func: implFnOnce(&mut R)) -> Self
where Self:AsMut<R>, R: ?Sized,

Calls.tap_ref_mut() only in debug builds, and is erased in releasebuilds.
Source§

fntap_deref_dbg<T>(self, func: implFnOnce(&T)) -> Self
where Self:Deref<Target = T>, T: ?Sized,

Calls.tap_deref() only in debug builds, and is erased in releasebuilds.
Source§

fntap_deref_mut_dbg<T>(self, func: implFnOnce(&mut T)) -> Self
where Self:DerefMut<Target = T> +Deref, T: ?Sized,

Calls.tap_deref_mut() only in debug builds, and is erased in releasebuilds.
Source§

impl<T>ToOwned for T
where T:Clone,

Source§

typeOwned = T

The resulting type after obtaining ownership.
Source§

fnto_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning.Read more
Source§

fnclone_into(&self, target:&mut T)

Uses borrowed data to replace owned data, usually by cloning.Read more
Source§

impl<T>TryConv for T

Source§

fntry_conv<T>(self) ->Result<T, Self::Error>
where Self:TryInto<T>,

Attempts to convertself intoT usingTryInto<T>.Read more
Source§

impl<T, U>TryFrom<U> for T
where U:Into<T>,

Source§

typeError =Infallible

The type returned in the event of a conversion error.
Source§

fntry_from(value: U) ->Result<T, <T asTryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U>TryInto<U> for T
where U:TryFrom<T>,

Source§

typeError = <U asTryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fntry_into(self) ->Result<U, <U asTryFrom<T>>::Error>

Performs the conversion.
Source§

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

Source§

fnvzip(self) -> V

Source§

impl<T>ErasedDestructor for T
where T: 'static,


[8]ページ先頭

©2009-2025 Movatter.jp