From 326af7ea836f26ee0bbc68481a7deb8b29975a07 Mon Sep 17 00:00:00 2001 From: Dreaded_X Date: Wed, 17 Sep 2025 03:26:17 +0200 Subject: [PATCH] refactor: Use itertools to simplify code --- Cargo.lock | 16 ++++++++++++++++ lua_typed_macro/Cargo.toml | 1 + lua_typed_macro/src/lib.rs | 20 ++++++-------------- 3 files changed, 23 insertions(+), 14 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 81ae498..f12676c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -29,6 +29,12 @@ version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8975ffdaa0ef3661bfe02dbdcc06c9f829dfafe6a3c474de366a8d5e44276921" +[[package]] +name = "either" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" + [[package]] name = "encode_unicode" version = "1.0.0" @@ -74,6 +80,15 @@ dependencies = [ "similar", ] +[[package]] +name = "itertools" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" +dependencies = [ + "either", +] + [[package]] name = "itoa" version = "1.0.15" @@ -100,6 +115,7 @@ name = "lua_typed_macro" version = "0.1.0" dependencies = [ "convert_case", + "itertools", "proc-macro2", "quote", "syn", diff --git a/lua_typed_macro/Cargo.toml b/lua_typed_macro/Cargo.toml index f89da8e..c9c4819 100644 --- a/lua_typed_macro/Cargo.toml +++ b/lua_typed_macro/Cargo.toml @@ -11,3 +11,4 @@ proc-macro2 = "1.0.101" quote = "1.0.40" syn = { version = "2.0.106", features = ["extra-traits"] } convert_case = "0.8.0" +itertools = "0.14.0" diff --git a/lua_typed_macro/src/lib.rs b/lua_typed_macro/src/lib.rs index 2b3d797..5e6d270 100644 --- a/lua_typed_macro/src/lib.rs +++ b/lua_typed_macro/src/lib.rs @@ -3,6 +3,7 @@ use std::ops::Deref; use convert_case::{Case, Casing}; +use itertools::Itertools; use proc_macro2::TokenStream as TokenStream2; use quote::{ToTokens, quote}; use syn::{DataEnum, DataStruct, DeriveInput, LitStr, Token, parse_macro_input, spanned::Spanned}; @@ -244,24 +245,15 @@ impl ExtTaggedEnum { fields, }) }) - .partition(|variant| variant.is_ok()); + .partition_result(); - if let Some(err) = err - .into_iter() - .map(|err| err.expect_err("Should only contain err results")) - .reduce(|mut acc, err| { - acc.combine(err); - acc - }) - { + if let Some(err) = err.into_iter().reduce(|mut acc, err| { + acc.combine(err); + acc + }) { return Err(err); } - let variants = variants - .into_iter() - .map(|variant| variant.expect("Should only contain ok results")) - .collect(); - Ok(Self { tag, variants }) } }