diff options
-rw-r--r-- | native/src/clipboard.rs | 17 | ||||
-rw-r--r-- | native/src/command.rs | 10 | ||||
-rw-r--r-- | native/src/command/action.rs | 22 | ||||
-rw-r--r-- | native/src/lib.rs | 4 |
4 files changed, 51 insertions, 2 deletions
diff --git a/native/src/clipboard.rs b/native/src/clipboard.rs index 4d59d960..60703c31 100644 --- a/native/src/clipboard.rs +++ b/native/src/clipboard.rs @@ -1,4 +1,5 @@ //! Access the clipboard. +use std::fmt; /// A buffer for short-term storage and transfer within and between /// applications. @@ -22,12 +23,19 @@ impl Clipboard for Null { fn write(&mut self, _contents: String) {} } +/// A clipboard action to be performed by some [`Command`]. +/// +/// [`Command`]: crate::Command pub enum Action<T> { + /// Read the clipboard and produce `T` with the result. Read(Box<dyn Fn(Option<String>) -> T>), + + /// Write the given contents to the clipboard. Write(String), } impl<T> Action<T> { + /// Maps the output of a clipboard [`Action`] using the provided closure. pub fn map<A>(self, f: impl Fn(T) -> A + 'static + Send + Sync) -> Action<A> where T: 'static, @@ -38,3 +46,12 @@ impl<T> Action<T> { } } } + +impl<T> fmt::Debug for Action<T> { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match self { + Self::Read(_) => write!(f, "Action::Read"), + Self::Write(_) => write!(f, "Action::Write"), + } + } +} diff --git a/native/src/command.rs b/native/src/command.rs index 1d41539b..6fe518d7 100644 --- a/native/src/command.rs +++ b/native/src/command.rs @@ -1,7 +1,9 @@ +//! Run asynchronous actions. mod action; pub use action::Action; +use std::fmt; use std::future::Future; /// A set of asynchronous actions to be performed by some runtime. @@ -60,3 +62,11 @@ impl<T> Command<T> { command.actions() } } + +impl<T> fmt::Debug for Command<T> { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + let Command(command) = self; + + command.fmt(f) + } +} diff --git a/native/src/command/action.rs b/native/src/command/action.rs index 23d6e96e..77be1b59 100644 --- a/native/src/command/action.rs +++ b/native/src/command/action.rs @@ -1,9 +1,19 @@ use crate::clipboard; use crate::window; +use std::fmt; + +/// An action that a [`Command`] can perform. +/// +/// [`Command`]: crate::Command pub enum Action<T> { + /// Run a [`Future`] to completion. Future(iced_futures::BoxFuture<T>), + + /// Run a clipboard action. Clipboard(clipboard::Action<T>), + + /// Run a window action. Window(window::Action), } @@ -22,3 +32,15 @@ impl<T> Action<T> { } } } + +impl<T> fmt::Debug for Action<T> { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match self { + Self::Future(_) => write!(f, "Action::Future"), + Self::Clipboard(action) => { + write!(f, "Action::Clipboard({:?})", action) + } + Self::Window(action) => write!(f, "Action::Window({:?})", action), + } + } +} diff --git a/native/src/lib.rs b/native/src/lib.rs index f300e7b9..573be51d 100644 --- a/native/src/lib.rs +++ b/native/src/lib.rs @@ -28,8 +28,8 @@ //! [`druid`]: https://github.com/xi-editor/druid //! [`raw-window-handle`]: https://github.com/rust-windowing/raw-window-handle //! [renderer]: crate::renderer -//#![deny(missing_docs)] -//#![deny(missing_debug_implementations)] +#![deny(missing_docs)] +#![deny(missing_debug_implementations)] #![deny(unused_results)] #![forbid(unsafe_code)] #![forbid(rust_2018_idioms)] |