Merge pull request #90 from dscottboggs/fix/derive-is_variant

Fix: derive `is_variant`
This commit is contained in:
Scott Boggs 2023-03-19 12:02:54 -04:00 committed by GitHub
commit e6aae9041f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 21 additions and 25 deletions

View File

@ -28,10 +28,6 @@ edition.workspace = true
[package.metadata.docs.rs] [package.metadata.docs.rs]
features = ["all"] features = ["all"]
[patch.crates-io.is_variant]
git = "https://github.com/dscottboggs/rust_macro_is_variant.git"
branch = "fixes"
[dependencies.mastodon-async-entities] [dependencies.mastodon-async-entities]
path = "./entities" path = "./entities"
version = "1.0.3" version = "1.0.3"
@ -48,7 +44,7 @@ static_assertions = "1.1.0"
percent-encoding = "2.2.0" percent-encoding = "2.2.0"
thiserror = "1.0.38" thiserror = "1.0.38"
derive_deref = "1.1.1" derive_deref = "1.1.1"
is_variant = "1.0.0" derive_is_enum_variant = "0.1.1"
[dependencies.parse_link_header] [dependencies.parse_link_header]
version = "0.3.3" version = "0.3.3"

View File

@ -13,7 +13,7 @@ edition.workspace = true
futures = "0.3.25" futures = "0.3.25"
thiserror = "1" thiserror = "1"
static_assertions = "1" static_assertions = "1"
is_variant = "1.0.0" derive_is_enum_variant = "0.1.1"
[dependencies.log] [dependencies.log]
version = "0.4" version = "0.4"

View File

@ -1,7 +1,7 @@
//! Module containing everything related to media attachements. //! Module containing everything related to media attachements.
use crate::AttachmentId; use crate::AttachmentId;
use is_variant::IsVariant; use derive_is_enum_variant::is_enum_variant;
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
/// A struct representing a media attachment. /// A struct representing a media attachment.
@ -63,7 +63,7 @@ pub struct ImageDetails {
} }
/// The type of media attachment. /// The type of media attachment.
#[derive(Debug, Deserialize, Serialize, Clone, Copy, PartialEq, Eq, IsVariant)] #[derive(Debug, Deserialize, Serialize, Clone, Copy, PartialEq, Eq, is_enum_variant)]
pub enum MediaType { pub enum MediaType {
/// An image. /// An image.
#[serde(rename = "image")] #[serde(rename = "image")]

View File

@ -1,7 +1,7 @@
use is_variant::IsVariant; use derive_is_enum_variant::is_enum_variant;
/// Error type /// Error type
#[derive(Debug, thiserror::Error, IsVariant)] #[derive(Debug, thiserror::Error, is_enum_variant)]
pub enum Error { pub enum Error {
#[error("unrecognized visibility '{invalid}'")] #[error("unrecognized visibility '{invalid}'")]
VisibilityParsingError { invalid: String }, VisibilityParsingError { invalid: String },

View File

@ -1,8 +1,8 @@
use crate::{notification::Notification, status::Status}; use crate::{notification::Notification, status::Status};
use is_variant::IsVariant; use derive_is_enum_variant::is_enum_variant;
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Deserialize, Serialize, IsVariant)] #[derive(Debug, Clone, Deserialize, Serialize, is_enum_variant)]
/// Events that come from the /streaming/user API call /// Events that come from the /streaming/user API call
pub enum Event { pub enum Event {
/// Update event /// Update event

View File

@ -1,4 +1,4 @@
use is_variant::IsVariant; use derive_is_enum_variant::is_enum_variant;
use serde::{de::Visitor, Deserialize, Deserializer, Serialize}; use serde::{de::Visitor, Deserialize, Deserializer, Serialize};
use time::{serde::iso8601, OffsetDateTime}; use time::{serde::iso8601, OffsetDateTime};
@ -55,7 +55,7 @@ pub struct Filter {
} }
/// Represents the various types of Filter contexts /// Represents the various types of Filter contexts
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, IsVariant)] #[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, is_enum_variant)]
#[serde(rename_all = "lowercase")] #[serde(rename_all = "lowercase")]
pub enum FilterContext { pub enum FilterContext {
/// Represents the "home" context /// Represents the "home" context
@ -74,7 +74,7 @@ pub enum FilterContext {
/// ///
/// Please note that the spec requests that any unknown value be interpreted /// Please note that the spec requests that any unknown value be interpreted
/// as "warn". /// as "warn".
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, IsVariant)] #[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, is_enum_variant)]
#[serde(rename_all = "lowercase")] #[serde(rename_all = "lowercase")]
pub enum Action { pub enum Action {
/// Indicates filtered toots should show up, but with a warning /// Indicates filtered toots should show up, but with a warning

View File

@ -3,7 +3,7 @@
use crate::NotificationId; use crate::NotificationId;
use super::{account::Account, status::Status}; use super::{account::Account, status::Status};
use is_variant::IsVariant; use derive_is_enum_variant::is_enum_variant;
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
use time::{serde::iso8601, OffsetDateTime}; use time::{serde::iso8601, OffsetDateTime};
@ -26,7 +26,7 @@ pub struct Notification {
} }
/// The type of notification. /// The type of notification.
#[derive(Debug, Clone, Copy, Deserialize, Serialize, PartialEq, Eq, IsVariant)] #[derive(Debug, Clone, Copy, Deserialize, Serialize, PartialEq, Eq, is_enum_variant)]
#[serde(rename_all = "lowercase")] #[serde(rename_all = "lowercase")]
pub enum NotificationType { pub enum NotificationType {
/// Someone mentioned the application client in another status. /// Someone mentioned the application client in another status.

View File

@ -1,9 +1,9 @@
use is_variant::IsVariant; use derive_is_enum_variant::is_enum_variant;
use serde::Deserialize; use serde::Deserialize;
use serde::Serialize; use serde::Serialize;
/// The visibility of a status. /// The visibility of a status.
#[derive(Clone, Copy, Debug, Deserialize, Serialize, PartialEq, Eq, IsVariant)] #[derive(Clone, Copy, Debug, Deserialize, Serialize, PartialEq, Eq, is_enum_variant)]
#[serde(rename_all = "lowercase")] #[serde(rename_all = "lowercase")]
pub enum Visibility { pub enum Visibility {
/// A Direct message to a user /// A Direct message to a user

View File

@ -1,9 +1,9 @@
use std::string::FromUtf8Error; use std::string::FromUtf8Error;
use std::{error, fmt, io::Error as IoError, num::TryFromIntError}; use std::{error, fmt, io::Error as IoError, num::TryFromIntError};
use derive_is_enum_variant::is_enum_variant;
#[cfg(feature = "env")] #[cfg(feature = "env")]
use envy::Error as EnvyError; use envy::Error as EnvyError;
use is_variant::IsVariant;
use reqwest::{header::ToStrError as HeaderStrError, Error as HttpError, StatusCode}; use reqwest::{header::ToStrError as HeaderStrError, Error as HttpError, StatusCode};
use serde::Deserialize; use serde::Deserialize;
use serde_json::Error as SerdeError; use serde_json::Error as SerdeError;
@ -18,7 +18,7 @@ use url::ParseError as UrlError;
pub type Result<T> = ::std::result::Result<T, Error>; pub type Result<T> = ::std::result::Result<T, Error>;
/// enum of possible errors encountered using the mastodon API. /// enum of possible errors encountered using the mastodon API.
#[derive(Debug, thiserror::Error, IsVariant)] #[derive(Debug, thiserror::Error, is_enum_variant)]
pub enum Error { pub enum Error {
/// Error from the Mastodon API. This typically means something went /// Error from the Mastodon API. This typically means something went
/// wrong with your authentication or data. /// wrong with your authentication or data.

View File

@ -6,10 +6,10 @@ use std::{
str::FromStr, str::FromStr,
}; };
use is_variant::IsVariant;
use serde::ser::{Serialize, Serializer}; use serde::ser::{Serialize, Serializer};
use crate::errors::Error; use crate::errors::Error;
use derive_is_enum_variant::is_enum_variant;
use serde::{ use serde::{
de::{self, Visitor}, de::{self, Visitor},
Deserialize, Deserializer, Deserialize, Deserializer,
@ -258,7 +258,7 @@ impl fmt::Display for Scopes {
/// Permission scope of the application. /// Permission scope of the application.
/// [Details on what each permission provides][1] /// [Details on what each permission provides][1]
/// [1]: https://github.com/tootsuite/documentation/blob/master/Using-the-API/OAuth-details.md) /// [1]: https://github.com/tootsuite/documentation/blob/master/Using-the-API/OAuth-details.md)
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, IsVariant)] #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, is_enum_variant)]
#[serde(rename_all = "lowercase")] #[serde(rename_all = "lowercase")]
pub enum Scope { pub enum Scope {
/// Read only permissions. /// Read only permissions.
@ -353,7 +353,7 @@ impl Default for Scope {
} }
/// Represents the granular "read:___" oauth scopes /// Represents the granular "read:___" oauth scopes
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, IsVariant)] #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, is_enum_variant)]
pub enum Read { pub enum Read {
/// Accounts /// Accounts
#[serde(rename = "accounts")] #[serde(rename = "accounts")]
@ -448,7 +448,7 @@ impl fmt::Display for Read {
} }
/// Represents the granular "write:___" oauth scopes /// Represents the granular "write:___" oauth scopes
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, IsVariant)] #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, is_enum_variant)]
pub enum Write { pub enum Write {
/// Accounts /// Accounts
#[serde(rename = "accounts")] #[serde(rename = "accounts")]