diff options
author | Robin Krahl <robin.krahl@ireas.org> | 2020-09-06 12:57:16 +0200 |
---|---|---|
committer | Robin Krahl <robin.krahl@ireas.org> | 2020-09-06 12:57:16 +0200 |
commit | 6039e0c76997014ed3f78768f8558da98d373e4b (patch) | |
tree | 165b2e3a55058a4a169095d44b9f578b1396dc8c | |
parent | 3046af524b9634e5dd0b8f5a4a98ac8b36dcfb36 (diff) | |
download | nitrokey-rs-6039e0c76997014ed3f78768f8558da98d373e4b.tar.gz nitrokey-rs-6039e0c76997014ed3f78768f8558da98d373e4b.tar.bz2 |
Make *Error, Model, DeviceWrapper non-exhaustive
Previously, all enums defined by the nitrokey crate were exhaustive.
This means that adding new variants to these enums is a breaking change.
To make it possible to add new features to nitrokey-rs without breaking
compatibility, this patch marks the Error, CommandError,
CommunicationError, LibraryError, Model and DeviceWrapper enums as
non-exhaustive.
-rw-r--r-- | CHANGELOG.md | 2 | ||||
-rw-r--r-- | src/device/mod.rs | 1 | ||||
-rw-r--r-- | src/device/wrapper.rs | 1 | ||||
-rw-r--r-- | src/error.rs | 4 |
4 files changed, 8 insertions, 0 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index cd43612..80efb57 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,8 @@ SPDX-License-Identifier: CC0-1.0 # Unreleased - Export the `FirmwareVersion` struct. +- Mark the `Error`, `CommandError`, `CommunicationError`, `LibraryError`, + `Model` and `DeviceWrapper` enums as non-exhaustive. # v0.7.1 (2020-08-30) - Remove the custom `std::error::Error::source` implementation for diff --git a/src/device/mod.rs b/src/device/mod.rs index c84faa1..e9018a4 100644 --- a/src/device/mod.rs +++ b/src/device/mod.rs @@ -28,6 +28,7 @@ pub use wrapper::DeviceWrapper; /// Available Nitrokey models. #[derive(Clone, Copy, Debug, PartialEq)] +#[non_exhaustive] pub enum Model { /// The Nitrokey Storage. Storage, diff --git a/src/device/wrapper.rs b/src/device/wrapper.rs index 69291ad..942a905 100644 --- a/src/device/wrapper.rs +++ b/src/device/wrapper.rs @@ -64,6 +64,7 @@ use crate::otp::GenerateOtp; /// /// [`connect`]: struct.Manager.html#method.connect #[derive(Debug)] +#[non_exhaustive] pub enum DeviceWrapper<'a> { /// A Nitrokey Storage device. Storage(Storage<'a>), diff --git a/src/error.rs b/src/error.rs index 64a2ce0..f1e91c3 100644 --- a/src/error.rs +++ b/src/error.rs @@ -11,6 +11,7 @@ use crate::device; /// An error returned by the nitrokey crate. #[derive(Debug)] +#[non_exhaustive] pub enum Error { /// An error reported by the Nitrokey device in the response packet. CommandError(CommandError), @@ -111,6 +112,7 @@ impl fmt::Display for Error { /// An error reported by the Nitrokey device in the response packet. #[derive(Clone, Copy, Debug, PartialEq)] +#[non_exhaustive] pub enum CommandError { /// A packet with a wrong checksum has been sent or received. WrongCrc, @@ -177,6 +179,7 @@ impl fmt::Display for CommandError { /// A device communication error. #[derive(Clone, Copy, Debug, PartialEq)] +#[non_exhaustive] pub enum CommunicationError { /// Could not connect to a Nitrokey device. NotConnected, @@ -215,6 +218,7 @@ impl fmt::Display for CommunicationError { /// A library usage error. #[derive(Clone, Copy, Debug, PartialEq)] +#[non_exhaustive] pub enum LibraryError { /// A supplied string exceeded a length limit. StringTooLong, |