From dfbdf7b1179cc16d1093cfb82717a85ac8a0540a Mon Sep 17 00:00:00 2001 From: John Turner Date: Tue, 21 Oct 2025 21:56:19 -0400 Subject: remove if_chain depedency and update deps --- Cargo.lock | 183 ++++++++++++++++++++++++++----------- Cargo.toml | 3 +- src/lib.rs | 32 +++---- tests/trybuild/hidden-field.rs | 4 +- tests/trybuild/hidden-field.stderr | 17 +--- 5 files changed, 146 insertions(+), 93 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 265caf8..302bbfc 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,21 +1,17 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] -name = "basic-toml" -version = "0.1.2" +name = "equivalent" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c0de75129aa8d0cceaf750b89013f0e08804d6ec61416da787b35ad0d7cddf1" -dependencies = [ - "serde", -] +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "get" version = "0.0.0" dependencies = [ - "if_chain", "proc-macro2", "quote", "syn", @@ -24,63 +20,85 @@ dependencies = [ [[package]] name = "glob" -version = "0.3.1" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" +checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" [[package]] -name = "if_chain" -version = "1.0.2" +name = "hashbrown" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5419bdc4f6a9207fbeba6d11b604d481addf78ecd10c11ad51e76c2f6482748d" + +[[package]] +name = "indexmap" +version = "2.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb56e1aa765b4b4f3aadfab769793b7087bb03a4ea4920644a6d238e2df5b9ed" +checksum = "6717a8d2a5a929a1a2eb43a12812498ed141a0bcfb7e8f7844fbdbe4303bba9f" +dependencies = [ + "equivalent", + "hashbrown", +] [[package]] name = "itoa" -version = "1.0.6" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" [[package]] -name = "once_cell" -version = "1.17.1" +name = "memchr" +version = "2.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3" +checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" [[package]] name = "proc-macro2" -version = "1.0.52" +version = "1.0.101" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d0e1ae9e836cc3beddd63db0df682593d7e2d3d891ae8c9083d2113e1744224" +checksum = "89ae43fd86e4158d6db51ad8e2b80f313af9cc74f5c0e03ccb87de09998732de" dependencies = [ "unicode-ident", ] [[package]] name = "quote" -version = "1.0.26" +version = "1.0.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc" +checksum = "ce25767e7b499d1b604768e7cde645d14cc8584231ea6b295e9c9eb22c02e1d1" dependencies = [ "proc-macro2", ] [[package]] name = "ryu" -version = "1.0.13" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" [[package]] name = "serde" -version = "1.0.158" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "771d4d9c4163ee138805e12c710dd365e4f44be8be0503cb1bb9eb989425d9c9" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", +] + +[[package]] +name = "serde_core" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +dependencies = [ + "serde_derive", +] [[package]] name = "serde_derive" -version = "1.0.157" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78997f4555c22a7971214540c4a661291970619afd56de19f77e0de86296e1e5" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", @@ -89,83 +107,138 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.94" +version = "1.0.145" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c533a59c9d8a93a09c6ab31f0fd5e5f4dd1b8fc9434804029839884765d04ea" +checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" dependencies = [ "itoa", + "memchr", "ryu", "serde", + "serde_core", +] + +[[package]] +name = "serde_spanned" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e24345aa0fe688594e73770a5f6d1b216508b4f93484c0026d521acd30134392" +dependencies = [ + "serde_core", ] [[package]] name = "syn" -version = "2.0.2" +version = "2.0.107" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59d3276aee1fa0c33612917969b5172b5be2db051232a6e4826f1a1a9191b045" +checksum = "2a26dbd934e5451d21ef060c018dae56fc073894c5a7896f882928a76e6d081b" dependencies = [ "proc-macro2", "quote", "unicode-ident", ] +[[package]] +name = "target-triple" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ac9aa371f599d22256307c24a9d748c041e548cbf599f35d890f9d365361790" + [[package]] name = "termcolor" -version = "1.2.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6" +checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" dependencies = [ "winapi-util", ] +[[package]] +name = "toml" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0dc8b1fb61449e27716ec0e1bdf0f6b8f3e8f6b05391e8497b8b6d7804ea6d8" +dependencies = [ + "indexmap", + "serde_core", + "serde_spanned", + "toml_datetime", + "toml_parser", + "toml_writer", + "winnow", +] + +[[package]] +name = "toml_datetime" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2cdb639ebbc97961c51720f858597f7f24c4fc295327923af55b74c3c724533" +dependencies = [ + "serde_core", +] + +[[package]] +name = "toml_parser" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0cbe268d35bdb4bb5a56a2de88d0ad0eb70af5384a99d648cd4b3d04039800e" +dependencies = [ + "winnow", +] + +[[package]] +name = "toml_writer" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df8b2b54733674ad286d16267dcfc7a71ed5c776e4ac7aa3c3e2561f7c637bf2" + [[package]] name = "trybuild" -version = "1.0.80" +version = "1.0.112" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "501dbdbb99861e4ab6b60eb6a7493956a9defb644fd034bc4a5ef27c693c8a3a" +checksum = "4d66678374d835fe847e0dc8348fde2ceb5be4a7ec204437d8367f0d8df266a5" dependencies = [ - "basic-toml", "glob", - "once_cell", "serde", "serde_derive", "serde_json", + "target-triple", "termcolor", + "toml", ] [[package]] name = "unicode-ident" -version = "1.0.8" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4" +checksum = "462eeb75aeb73aea900253ce739c8e18a67423fadf006037cd3ff27e82748a06" [[package]] -name = "winapi" -version = "0.3.9" +name = "winapi-util" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", + "windows-sys", ] [[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" +name = "windows-link" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" [[package]] -name = "winapi-util" -version = "0.1.5" +name = "windows-sys" +version = "0.61.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" dependencies = [ - "winapi", + "windows-link", ] [[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" +name = "winnow" +version = "0.7.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +checksum = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf" diff --git a/Cargo.toml b/Cargo.toml index 6b67f7c..543ed01 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "get" version = "0.0.0" -edition = "2021" +edition = "2024" [lib] proc-macro = true @@ -10,7 +10,6 @@ proc-macro = true syn = "2" quote = "1.0.23" proc-macro2 = "1.0.51" -if_chain = "=1.0.2" [dev-dependencies] trybuild = "1" \ No newline at end of file diff --git a/src/lib.rs b/src/lib.rs index 19bf5dc..7154b6c 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -110,13 +110,11 @@ pub fn get_copy(input: proc_macro::TokenStream) -> proc_macro::TokenStream { } mod get { - - use if_chain::if_chain; use proc_macro2::{Span, TokenStream}; - use quote::{format_ident, quote, ToTokens}; + use quote::{ToTokens, format_ident, quote}; use syn::{ - parse::Parser, punctuated::Punctuated, Attribute, Data, DeriveInput, Expr, Field, Fields, - Ident, Index, Lit, Member, MetaNameValue, Token, Type, + Attribute, Data, DeriveInput, Expr, Field, Fields, Ident, Index, Lit, Member, + MetaNameValue, Token, Type, parse::Parser, punctuated::Punctuated, }; enum GetAttribute { @@ -144,7 +142,7 @@ mod get { is_copy: bool, ) -> Result> { let Data::Struct(target) = &input.data else { - return Err("expected struct as derive input".into()) + return Err("expected struct as derive input".into()); }; let getters = match &target.fields { Fields::Unnamed(fields) => expand_for_tuple_struct(fields.unnamed.iter(), is_copy)?, @@ -175,7 +173,7 @@ mod get { Some(Ok(GetAttribute::IdentList(list))) if list.iter().any(|i| matches!(i, GetIdent::Hide)) => { - continue + continue; } Some(Ok(GetAttribute::NameValueList(list))) => { let method_name = list @@ -216,7 +214,7 @@ mod get { Some(Ok(GetAttribute::IdentList(list))) if list.iter().any(|i| matches!(i, GetIdent::Hide)) => { - continue + continue; } Some(Ok(GetAttribute::NameValueList(list))) if list.method.is_some() => { expand_getter( @@ -335,16 +333,14 @@ mod get { impl TryFrom for GetNameValue { type Error = Box; fn try_from(meta: MetaNameValue) -> Result { - if_chain! { - if let Some(name) = meta.path.get_ident().map(|ident| ident.to_string()); - if let Expr::Lit(expr) = &meta.value; - if let Lit::Str(s) = &expr.lit; - if let "method" = name.as_str(); - then { - Ok(Self::Method(s.value())) - } else { - Err("invalid name value pair in attribute".into()) - } + if let Some(name) = meta.path.get_ident().map(|ident| ident.to_string()) + && let Expr::Lit(expr) = &meta.value + && let Lit::Str(s) = &expr.lit + && let "method" = name.as_str() + { + Ok(Self::Method(s.value())) + } else { + Err("invalid name value pair in attribute".into()) } } } diff --git a/tests/trybuild/hidden-field.rs b/tests/trybuild/hidden-field.rs index 52675fb..b5d1176 100644 --- a/tests/trybuild/hidden-field.rs +++ b/tests/trybuild/hidden-field.rs @@ -4,13 +4,13 @@ use get::Get; struct Crab { #[get(hide)] name: String, - age: u64 + age: u64, } fn crab() { let ferris = Crab { name: "ferris".to_string(), - 1 + age: 1, }; assert_eq!(ferris.name().as_str(), "ferris"); } diff --git a/tests/trybuild/hidden-field.stderr b/tests/trybuild/hidden-field.stderr index 1b2adf0..66fa73b 100644 --- a/tests/trybuild/hidden-field.stderr +++ b/tests/trybuild/hidden-field.stderr @@ -1,22 +1,7 @@ -error: expected identifier, found `1` - --> tests/trybuild/hidden-field.rs:13:9 - | -11 | let ferris = Crab { - | ---- while parsing this struct -12 | name: "ferris".to_string(), -13 | 1 - | ^ expected identifier - -error[E0063]: missing field `age` in initializer of `Crab` - --> tests/trybuild/hidden-field.rs:11:18 - | -11 | let ferris = Crab { - | ^^^^ missing `age` - error[E0599]: no method named `name` found for struct `Crab` in the current scope --> tests/trybuild/hidden-field.rs:15:23 | -4 | struct Crab { + 4 | struct Crab { | ----------- method `name` not found for this struct ... 15 | assert_eq!(ferris.name().as_str(), "ferris"); -- cgit v1.2.3