From 1e9556903dffaf77006ba10bba806114428cd53f Mon Sep 17 00:00:00 2001 From: Robin Krahl Date: Tue, 10 Jul 2018 13:08:56 +0200 Subject: Add a Storage-only example to the DeviceWrapper documentation As connect() now returns DeviceWrappers of the correct type, this patch adds an example to the DeviceWrapper documentation that shows how to use type conditions, i. e. how to execute a command only for Nitrokey Storage devices. --- TODO.md | 1 - src/device.rs | 20 ++++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/TODO.md b/TODO.md index 38044ae..2d865a4 100644 --- a/TODO.md +++ b/TODO.md @@ -35,7 +35,6 @@ - Clear passwords from memory. - Find a nicer syntax for the `write_config` test. - Prevent construction of internal types. -- Add Storage-only examples to the `DeviceWrapper` documentation. - More specific error checking in the tests. - Differentiate empty strings and errors (see `result_from_string`). - Check integer conversions. diff --git a/src/device.rs b/src/device.rs index 4f96860..843b41d 100644 --- a/src/device.rs +++ b/src/device.rs @@ -50,6 +50,26 @@ enum Model { /// # } /// ``` /// +/// Device-specific commands: +/// +/// ```no_run +/// use nitrokey::{DeviceWrapper, Storage}; +/// # use nitrokey::CommandError; +/// +/// fn perform_common_task(device: &DeviceWrapper) {} +/// fn perform_storage_task(device: &Storage) {} +/// +/// # fn try_main() -> Result<(), CommandError> { +/// let device = nitrokey::connect()?; +/// perform_common_task(&device); +/// match device { +/// DeviceWrapper::Storage(storage) => perform_storage_task(&storage), +/// _ => (), +/// }; +/// # Ok(()) +/// # } +/// ``` +/// /// [`connect`]: fn.connect.html // TODO: add example for Storage-specific code #[derive(Debug)] -- cgit v1.2.1