summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Turner <jturner.usa@gmail.com>2025-10-21 21:56:19 -0400
committerJohn Turner <jturner.usa@gmail.com>2025-10-21 21:56:19 -0400
commitdfbdf7b1179cc16d1093cfb82717a85ac8a0540a (patch)
tree36f04bf66f6c5942fa7028d1b44e1c2829402ad4
parent8df5bd58fcc040959ce573537aaec831aa1cf1fb (diff)
downloadget-dfbdf7b1179cc16d1093cfb82717a85ac8a0540a.tar.gz
remove if_chain depedency and update deps
-rw-r--r--Cargo.lock183
-rw-r--r--Cargo.toml3
-rw-r--r--src/lib.rs32
-rw-r--r--tests/trybuild/hidden-field.rs4
-rw-r--r--tests/trybuild/hidden-field.stderr17
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,20 +107,31 @@ 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",
@@ -110,62 +139,106 @@ dependencies = [
]
[[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<TokenStream, Box<dyn std::error::Error>> {
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<MetaNameValue> for GetNameValue {
type Error = Box<dyn std::error::Error>;
fn try_from(meta: MetaNameValue) -> Result<Self, Self::Error> {
- 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");