M CHANGELOG.md => CHANGELOG.md +2 -0
@@ 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
M src/device/mod.rs => src/device/mod.rs +1 -0
@@ 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,
M src/device/wrapper.rs => src/device/wrapper.rs +1 -0
@@ 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>),
M src/error.rs => src/error.rs +4 -0
@@ 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,