diff options
author | 2019-11-18 07:16:19 +0100 | |
---|---|---|
committer | 2019-11-18 07:16:19 +0100 | |
commit | d3553adf278e5b616fbd885f321faa83a4d24b56 (patch) | |
tree | 5bbfba3b45fd34d9c9604f28bcbb80e9856873a3 /core/src/command.rs | |
parent | 63dbf078fefea444073813e834c2d35fa25eb3a7 (diff) | |
download | iced-d3553adf278e5b616fbd885f321faa83a4d24b56.tar.gz iced-d3553adf278e5b616fbd885f321faa83a4d24b56.tar.bz2 iced-d3553adf278e5b616fbd885f321faa83a4d24b56.zip |
Write documentation for `iced_core`
Diffstat (limited to 'core/src/command.rs')
-rw-r--r-- | core/src/command.rs | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/core/src/command.rs b/core/src/command.rs index e1c865dd..698105aa 100644 --- a/core/src/command.rs +++ b/core/src/command.rs @@ -1,16 +1,30 @@ use futures::future::{BoxFuture, Future, FutureExt}; +/// A collection of async operations. +/// +/// You should be able to turn a future easily into a [`Command`], eiter by +/// using the `From` trait or [`Command::perform`]. +/// +/// [`Command`]: struct.Command.html pub struct Command<T> { futures: Vec<BoxFuture<'static, T>>, } impl<T> Command<T> { + /// Creates an empty [`Command`]. + /// + /// In other words, a [`Command`] that does nothing. + /// + /// [`Command`]: struct.Command.html pub fn none() -> Self { Self { futures: Vec::new(), } } + /// Creates a [`Command`] that performs the action of the given future. + /// + /// [`Command`]: struct.Command.html pub fn perform<A>( future: impl Future<Output = T> + 'static + Send, f: impl Fn(T) -> A + 'static + Send, @@ -20,12 +34,21 @@ impl<T> Command<T> { } } + /// Creates a [`Command`] that performs the actions of all the givens + /// futures. + /// + /// Once this command is run, all the futures will be exectued at once. + /// + /// [`Command`]: struct.Command.html pub fn batch(commands: impl Iterator<Item = Command<T>>) -> Self { Self { futures: commands.flat_map(|command| command.futures).collect(), } } + /// Converts a [`Command`] into its underlying list of futures. + /// + /// [`Command`]: struct.Command.html pub fn futures(self) -> Vec<BoxFuture<'static, T>> { self.futures } |