refactor: Use itertools to simplify code
This commit is contained in:
16
Cargo.lock
generated
16
Cargo.lock
generated
@@ -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",
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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 })
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user