From c55dab7122bd69363e80adf66ce999aaaa67fffe Mon Sep 17 00:00:00 2001 From: Devin Ragotzy Date: Tue, 29 Jun 2021 19:27:09 -0400 Subject: [PATCH] misc-errors: Allow or make error enums non_exhaustive --- crates/ruma-identifiers-validation/src/error.rs | 1 + crates/ruma-serde/src/canonical_json.rs | 1 + crates/ruma-serde/src/canonical_json/value.rs | 1 + crates/ruma-serde/src/urlencoded/ser.rs | 1 + crates/ruma-signatures/src/error.rs | 2 ++ crates/ruma-signatures/src/verification.rs | 1 + crates/ruma-state-res/src/error.rs | 1 + 7 files changed, 8 insertions(+) diff --git a/crates/ruma-identifiers-validation/src/error.rs b/crates/ruma-identifiers-validation/src/error.rs index ec7ec75f..2587feb3 100644 --- a/crates/ruma-identifiers-validation/src/error.rs +++ b/crates/ruma-identifiers-validation/src/error.rs @@ -4,6 +4,7 @@ use std::fmt; /// An error encountered when trying to parse an invalid ID string. #[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)] +#[non_exhaustive] pub enum Error { /// The client secret is empty. EmptyClientSecret, diff --git a/crates/ruma-serde/src/canonical_json.rs b/crates/ruma-serde/src/canonical_json.rs index 017f289f..83b0744e 100644 --- a/crates/ruma-serde/src/canonical_json.rs +++ b/crates/ruma-serde/src/canonical_json.rs @@ -24,6 +24,7 @@ pub fn to_string(val: &T) -> Result { /// The set of possible errors when serializing to canonical JSON. #[derive(Debug)] +#[allow(clippy::exhaustive_enums)] pub enum Error { /// The numeric value failed conversion to js_int::Int. IntConvert, diff --git a/crates/ruma-serde/src/canonical_json/value.rs b/crates/ruma-serde/src/canonical_json/value.rs index 7caa30a0..b5c831f2 100644 --- a/crates/ruma-serde/src/canonical_json/value.rs +++ b/crates/ruma-serde/src/canonical_json/value.rs @@ -15,6 +15,7 @@ pub type Object = BTreeMap; /// Represents a canonical JSON value as per the Matrix specification. #[derive(Clone, Eq, PartialEq)] +#[allow(clippy::exhaustive_enums)] pub enum CanonicalJsonValue { /// Represents a JSON null value. /// diff --git a/crates/ruma-serde/src/urlencoded/ser.rs b/crates/ruma-serde/src/urlencoded/ser.rs index 02b0d295..a1791235 100644 --- a/crates/ruma-serde/src/urlencoded/ser.rs +++ b/crates/ruma-serde/src/urlencoded/ser.rs @@ -52,6 +52,7 @@ impl<'input, 'output, Target: UrlEncodedTarget> Serializer<'input, 'output, Targ /// Errors returned during serializing to `application/x-www-form-urlencoded`. #[derive(Clone, Debug, PartialEq, Eq)] +#[non_exhaustive] pub enum Error { /// UTF-8 validation failed. Utf8(str::Utf8Error), diff --git a/crates/ruma-signatures/src/error.rs b/crates/ruma-signatures/src/error.rs index f6152ea2..9304faef 100644 --- a/crates/ruma-signatures/src/error.rs +++ b/crates/ruma-signatures/src/error.rs @@ -109,6 +109,7 @@ impl JsonError { /// A JSON type enum for [`JsonError`] variants. #[derive(Debug)] +#[allow(clippy::exhaustive_enums)] pub enum JsonType { /// A JSON Object. Object, @@ -253,6 +254,7 @@ impl ParseError { /// An error when trying to extract the algorithm and version from a key identifier. #[derive(Error, Debug)] +#[non_exhaustive] pub enum SplitError { /// The signature's ID does not have exactly two components separated by a colon. #[error("malformed signature ID: expected exactly 2 segment separated by a colon, found {0}")] diff --git a/crates/ruma-signatures/src/verification.rs b/crates/ruma-signatures/src/verification.rs index 13851acd..b1e959c1 100644 --- a/crates/ruma-signatures/src/verification.rs +++ b/crates/ruma-signatures/src/verification.rs @@ -50,6 +50,7 @@ impl Verifier for Ed25519Verifier { /// that the event has been redacted. In this case, receiving homeservers should store a redacted /// version of the event. #[derive(Clone, Debug, Hash, PartialEq)] +#[allow(clippy::exhaustive_enums)] pub enum Verified { /// All signatures are valid and the content hashes match. All, diff --git a/crates/ruma-state-res/src/error.rs b/crates/ruma-state-res/src/error.rs index 1f27df89..4e7371f6 100644 --- a/crates/ruma-state-res/src/error.rs +++ b/crates/ruma-state-res/src/error.rs @@ -6,6 +6,7 @@ pub type Result = std::result::Result; /// Represents the various errors that arise when resolving state. #[derive(Error, Debug)] +#[non_exhaustive] pub enum Error { /// A deserialization error. #[error(transparent)]