summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--native/src/clipboard.rs17
-rw-r--r--native/src/command.rs10
-rw-r--r--native/src/command/action.rs22
-rw-r--r--native/src/lib.rs4
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)]