+
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
### v0.x.x - 2025-xx-xx
- Update Rust edition: 2021 -> 2024

### v0.6.1 - 2025-02-09
- **[FIX]** Fix `derive(Deserialize)` for no_std.

Expand Down
2 changes: 1 addition & 1 deletion nutype/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
name = "nutype"
version = "0.6.1"
authors = ["Serhii Potapov <blake131313@gmail.com>"]
edition = "2021"
edition = "2024"
description = "The newtype with guarantees."
keywords = ["newtype", "validation", "sanitization", "derive", "invariant"]
license = "MIT"
Expand Down
2 changes: 1 addition & 1 deletion nutype_macros/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[package]
name = "nutype_macros"
version = "0.6.1"
edition = "2021"
edition = "2024"
authors = ["Serhii Potapov <blake131313@gmail.com>"]
description = "The newtype with guarantees."
keywords = ["newtype", "validation", "sanitization", "derive", "invariant"]
Expand Down
2 changes: 1 addition & 1 deletion nutype_macros/build.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
use rustc_version::{version, version_meta, Channel};
use rustc_version::{Channel, version, version_meta};

fn main() {
let version = version().expect("Couldn't get Rust version");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ use quote::quote;
use crate::{
any::models::AnyValidator,
common::{
gen::error::gen_impl_error_trait,
generate::error::gen_impl_error_trait,
models::{ErrorTypePath, TypeName},
},
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,20 +5,20 @@ use std::collections::HashSet;

use proc_macro2::TokenStream;
use quote::quote;
use syn::{parse_quote, Generics};
use syn::{Generics, parse_quote};

use crate::common::{
gen::{
tests::gen_test_should_have_valid_default_value, traits::GeneratedTraits, GenerateNewtype,
generate::{
GenerateNewtype, tests::gen_test_should_have_valid_default_value, traits::GeneratedTraits,
},
models::{ConstFn, ErrorTypePath, Guard, TypeName, TypedCustomFunction},
};

use self::error::gen_validation_error_type;

use super::{
models::{AnyDeriveTrait, AnyGuard, AnyInnerType, AnySanitizer, AnyValidator},
AnyNewtype,
models::{AnyDeriveTrait, AnyGuard, AnyInnerType, AnySanitizer, AnyValidator},
};

use traits::gen_traits;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ use syn::Generics;

use crate::{
any::models::{AnyGuard, AnyInnerType},
common::gen::{add_bound_to_all_type_params, add_param, strip_trait_bounds_on_generics},
common::generate::{add_bound_to_all_type_params, add_param, strip_trait_bounds_on_generics},
common::models::TypeName,
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ use syn::Generics;
use crate::{
any::models::AnyInnerType,
common::{
gen::{add_param, strip_trait_bounds_on_generics},
generate::{add_param, strip_trait_bounds_on_generics},
models::TypeName,
},
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,19 @@ pub mod arbitrary;
pub mod into_iter;

use proc_macro2::TokenStream;
use quote::{quote, ToTokens};
use quote::{ToTokens, quote};
use std::collections::HashSet;

use crate::{
any::models::AnyDeriveTrait,
any::models::{AnyGuard, AnyInnerType},
common::{
gen::traits::{
gen_impl_trait_as_ref, gen_impl_trait_borrow, gen_impl_trait_default,
gen_impl_trait_deref, gen_impl_trait_display, gen_impl_trait_from,
gen_impl_trait_from_str, gen_impl_trait_into, gen_impl_trait_serde_deserialize,
gen_impl_trait_serde_serialize, gen_impl_trait_try_from, split_into_generatable_traits,
GeneratableTrait, GeneratableTraits, GeneratedTraits,
generate::traits::{
GeneratableTrait, GeneratableTraits, GeneratedTraits, gen_impl_trait_as_ref,
gen_impl_trait_borrow, gen_impl_trait_default, gen_impl_trait_deref,
gen_impl_trait_display, gen_impl_trait_from, gen_impl_trait_from_str,
gen_impl_trait_into, gen_impl_trait_serde_deserialize, gen_impl_trait_serde_serialize,
gen_impl_trait_try_from, split_into_generatable_traits,
},
models::TypeName,
},
Expand Down
4 changes: 2 additions & 2 deletions nutype_macros/src/any/mod.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
pub mod gen;
pub mod generate;
pub mod models;
pub mod parse;
pub mod validate;
Expand All @@ -7,7 +7,7 @@ use proc_macro2::TokenStream;
use std::collections::HashSet;

use self::models::{AnyDeriveTrait, AnyGuard, AnyInnerType, AnySanitizer, AnyValidator};
use crate::common::gen::GenerateNewtype;
use crate::common::generate::GenerateNewtype;
use crate::common::models::TypeName;
use crate::{
any::validate::validate_any_derive_traits,
Expand Down
4 changes: 2 additions & 2 deletions nutype_macros/src/any/parse.rs
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
use crate::common::{
models::{Attributes, CustomFunction, SpannedDeriveTrait, TypeName},
parse::{parse_sanitizer_kind, parse_validator_kind, ParseableAttributes},
parse::{ParseableAttributes, parse_sanitizer_kind, parse_validator_kind},
};
use proc_macro2::TokenStream;
use syn::{
parse::{Parse, ParseStream},
Token,
parse::{Parse, ParseStream},
};

use super::{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,11 @@ use super::models::{
ParseErrorTypeName, TypeName, TypeTrait,
};
use crate::common::{
gen::{new_unchecked::gen_new_unchecked, parse_error::gen_parse_error_name},
generate::{new_unchecked::gen_new_unchecked, parse_error::gen_parse_error_name},
models::{ModuleName, Validation},
};
use proc_macro2::{Punct, Spacing, TokenStream, TokenTree};
use quote::{format_ident, quote, ToTokens};
use quote::{ToTokens, format_ident, quote};
use syn::{Generics, Visibility};

/// Inject an inner type into a closure, so compiler does not complain if the token stream matchers
Expand Down Expand Up @@ -75,7 +75,7 @@ fn insert_type_at_position(ts: &mut Vec<TokenTree>, inner_type: TokenStream, pos

fn is_pipe(token: &TokenTree) -> bool {
match token {
TokenTree::Punct(ref punct) => punct.as_char() == '|',
TokenTree::Punct(punct) => punct.as_char() == '|',
_ => false,
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use crate::common::models::{ConstFn, NewUnchecked, TypeName};
use proc_macro2::TokenStream;
use quote::{quote, ToTokens};
use quote::{ToTokens, quote};

pub fn gen_new_unchecked(
type_name: &TypeName,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ use quote::{format_ident, quote};
use syn::Generics;

use crate::common::{
gen::{add_bound_to_all_type_params, strip_trait_bounds_on_generics},
generate::{add_bound_to_all_type_params, strip_trait_bounds_on_generics},
models::{ErrorTypePath, InnerType, ParseErrorTypeName, TypeName},
};

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
use proc_macro2::TokenStream;
use quote::{quote, ToTokens};
use quote::{ToTokens, quote};
use syn::Generics;

use crate::common::models::{NumericBound, TypeName};
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
use std::collections::HashSet;

use proc_macro2::TokenStream;
use quote::{quote, ToTokens};
use quote::{ToTokens, quote};
use syn::Generics;

use crate::common::{
gen::{add_bound_to_all_type_params, strip_trait_bounds_on_generics},
generate::{add_bound_to_all_type_params, strip_trait_bounds_on_generics},
models::{ErrorTypePath, InnerType, TypeName},
};

Expand Down
2 changes: 1 addition & 1 deletion nutype_macros/src/common/mod.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
pub mod gen;
pub mod generate;
pub mod models;
pub mod parse;
pub mod validate;
8 changes: 5 additions & 3 deletions nutype_macros/src/common/models.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,18 +6,18 @@ use std::collections::HashSet;
use syn::Generics;

use proc_macro2::{Span, TokenStream};
use quote::{quote, ToTokens};
use quote::{ToTokens, quote};
use syn::{
parse::{Parse, ParseStream},
Attribute, ExprClosure, Path,
parse::{Parse, ParseStream},
};

use crate::{
any::models::AnyInnerType, float::models::FloatInnerType, integer::models::IntegerInnerType,
string::models::StringInnerType,
};

use super::gen::type_custom_closure;
use super::generate::type_custom_closure;
use super::parse::RawValidation;

pub use error_type_path::ErrorTypePath;
Expand Down Expand Up @@ -49,6 +49,7 @@ impl<T: Kinded> Kinded for SpannedItem<T> {
}

/// Represents the inner type of a newtype.
#[allow(clippy::large_enum_variant)]
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum InnerType {
String(StringInnerType),
Expand Down Expand Up @@ -198,6 +199,7 @@ pub struct TypedMeta {
}

/// Validated model, that represents precisely what needs to be generated.
#[allow(clippy::large_enum_variant)]
#[derive(Debug)]
pub enum Guard<Sanitizer, Validator> {
WithoutValidation {
Expand Down
2 changes: 1 addition & 1 deletion nutype_macros/src/common/models/error_type_path.rs
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ impl Parse for ErrorTypePath {
impl core::fmt::Display for ErrorTypePath {
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
let token_stream: TokenStream = self.0.clone().to_token_stream();
write!(f, "{}", token_stream)
write!(f, "{token_stream}")
}
}

Expand Down
2 changes: 1 addition & 1 deletion nutype_macros/src/common/parse/meta.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use proc_macro2::TokenStream;
use quote::ToTokens;
use syn::{spanned::Spanned, Attribute, DeriveInput, Visibility};
use syn::{Attribute, DeriveInput, Visibility, spanned::Spanned};

use crate::{
any::models::AnyInnerType,
Expand Down
11 changes: 7 additions & 4 deletions nutype_macros/src/common/parse/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,10 @@ use cfg_if::cfg_if;
use kinded::{Kind, Kinded};
use proc_macro2::{Ident, Span};
use syn::{
parenthesized,
Expr, Lit, Token, parenthesized,
parse::{Parse, ParseStream},
spanned::Spanned,
token::Paren,
Expr, Lit, Token,
};

use crate::common::models::SpannedDeriveTrait;
Expand Down Expand Up @@ -142,7 +141,9 @@ where
.collect::<Vec<_>>()
.join(", ");
let ident: Ident = input.parse()?;
let msg = format!("Unknown validation attribute: `{ident}`.\nPossible attributes are {possible_values}.");
let msg = format!(
"Unknown validation attribute: `{ident}`.\nPossible attributes are {possible_values}."
);
Err(syn::Error::new(ident.span(), msg))
}
}
Expand Down Expand Up @@ -203,7 +204,9 @@ where
Err(syn::Error::new(input.span(), msg))
}
(0, None, Some(error_type)) => {
let msg = format!("The `error` attribute requires an accompanying `with` attribute.\nPlease provide the validation function that returns Result<(), {error_type}>.");
let msg = format!(
"The `error` attribute requires an accompanying `with` attribute.\nPlease provide the validation function that returns Result<(), {error_type}>."
);
Err(syn::Error::new(input.span(), msg))
}
(0, None, None) => {
Expand Down
2 changes: 1 addition & 1 deletion nutype_macros/src/common/validate.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@ use kinded::Kinded;
use proc_macro2::Span;

use super::{
r#generate::error::gen_error_type_name,
models::{
DeriveTrait, Guard, NumericBoundValidator, RawGuard, SpannedDeriveTrait, SpannedItem,
TypeName, Validation,
},
parse::RawValidation,
r#gen::error::gen_error_type_name,
};

/// Some kind of template method to validate a guard of all types.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
use proc_macro2::TokenStream;
use quote::{quote, ToTokens};
use quote::{ToTokens, quote};

use crate::common::{
gen::error::gen_impl_error_trait,
generate::error::gen_impl_error_trait,
models::{ErrorTypePath, TypeName},
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,23 +4,23 @@ pub mod traits;
use std::collections::HashSet;

use proc_macro2::TokenStream;
use quote::{quote, ToTokens};
use quote::{ToTokens, quote};
use syn::Generics;

use self::error::gen_validation_error_type;
use super::{
models::{FloatDeriveTrait, FloatGuard, FloatSanitizer, FloatType, FloatValidator},
FloatNewtype,
models::{FloatDeriveTrait, FloatGuard, FloatSanitizer, FloatType, FloatValidator},
};
use crate::{
common::{
gen::{
generate::{
GenerateNewtype,
tests::{
gen_test_should_have_consistent_lower_and_upper_boundaries,
gen_test_should_have_valid_default_value,
},
traits::GeneratedTraits,
GenerateNewtype,
},
models::{ConstFn, ErrorTypePath, Guard, TypeName},
},
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
use proc_macro2::{Span, TokenStream};
use quote::{quote, ToTokens};
use quote::{ToTokens, quote};

use crate::{
common::models::{TypeName, Validation},
float::models::{
FloatGuard, FloatInnerType, FloatSanitizer, FloatSanitizerKind, FloatValidator,
FloatValidatorKind,
},
utils::issue_reporter::{build_github_link_with_issue, Issue},
utils::issue_reporter::{Issue, build_github_link_with_issue},
};

pub fn gen_impl_trait_arbitrary<T: ToTokens>(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,17 @@ pub mod arbitrary;
use std::collections::HashSet;

use proc_macro2::TokenStream;
use quote::{quote, ToTokens};
use quote::{ToTokens, quote};
use syn::Generics;

use crate::{
common::{
gen::traits::{
gen_impl_trait_as_ref, gen_impl_trait_borrow, gen_impl_trait_default,
gen_impl_trait_deref, gen_impl_trait_display, gen_impl_trait_from,
gen_impl_trait_from_str, gen_impl_trait_into, gen_impl_trait_serde_deserialize,
gen_impl_trait_serde_serialize, gen_impl_trait_try_from, split_into_generatable_traits,
GeneratableTrait, GeneratableTraits, GeneratedTraits,
generate::traits::{
GeneratableTrait, GeneratableTraits, GeneratedTraits, gen_impl_trait_as_ref,
gen_impl_trait_borrow, gen_impl_trait_default, gen_impl_trait_deref,
gen_impl_trait_display, gen_impl_trait_from, gen_impl_trait_from_str,
gen_impl_trait_into, gen_impl_trait_serde_deserialize, gen_impl_trait_serde_serialize,
gen_impl_trait_try_from, split_into_generatable_traits,
},
models::TypeName,
},
Expand Down
Loading
Loading
点击 这是indexloc提供的php浏览器服务,不要输入任何密码和下载