pub trait FnOnce<Args>{
type Output;
// Required method
extern "rust-call" fn call_once(self, args: Args) -> Self::Output;
}
Expand description
The version of the call operator that takes a by-value receiver.
Instances of FnOnce
can be called, but might not be callable multiple times. Because of this, if the only thing known about a type is that it implements FnOnce
, it can only be called once.
FnOnce
is implemented automatically by closures that might consume captured variables, as well as all types that implement FnMut
, e.g., (safe) function pointers (since FnOnce
is a supertrait of FnMut
).
Since both Fn
and FnMut
are subtraits of FnOnce
, any instance of Fn
or FnMut
can be used where a FnOnce
is expected.
Use FnOnce
as a bound when you want to accept a parameter of function-like type and only need to call it once. If you need to call the parameter repeatedly, use FnMut
as a bound; if you also need it to not mutate state, use Fn
.
See the chapter on closures in The Rust Programming Language for some more information on this topic.
Also of note is the special syntax for Fn
traits (e.g. Fn(usize, bool) -> usize
). Those interested in the technical details of this can refer to the relevant section in the Rustonomicon.
FnOnce
parameter
fn consume_with_relish<F>(func: F)
where F: FnOnce() -> String
{
println!("Consumed: {}", func());
println!("Delicious!");
}
let x = String::from("x");
let consume_and_return_x = move || x;
consume_with_relish(consume_and_return_x);
1.12.0 · Source
The returned type after the call operator is used.
Source ð¬This is a nightly-only experimental API. (fn_traits
#29625)
Performs the call operation.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4