mirror of
https://github.com/hl-archive-node/nanoreth.git
synced 2025-12-06 10:59:55 +00:00
feat: re-export used deps from reth-codecs (#13167)
This commit is contained in:
@ -26,7 +26,7 @@ op-alloy-consensus = { workspace = true, optional = true }
|
|||||||
|
|
||||||
# misc
|
# misc
|
||||||
bytes.workspace = true
|
bytes.workspace = true
|
||||||
modular-bitfield = { workspace = true, optional = true }
|
modular-bitfield.workspace = true
|
||||||
visibility = { version = "0.1.1", optional = true}
|
visibility = { version = "0.1.1", optional = true}
|
||||||
serde.workspace = true
|
serde.workspace = true
|
||||||
arbitrary = { workspace = true, features = ["derive"], optional = true }
|
arbitrary = { workspace = true, features = ["derive"], optional = true }
|
||||||
@ -65,7 +65,6 @@ alloy = [
|
|||||||
"dep:alloy-consensus",
|
"dep:alloy-consensus",
|
||||||
"dep:alloy-eips",
|
"dep:alloy-eips",
|
||||||
"dep:alloy-genesis",
|
"dep:alloy-genesis",
|
||||||
"dep:modular-bitfield",
|
|
||||||
"dep:alloy-trie",
|
"dep:alloy-trie",
|
||||||
]
|
]
|
||||||
op = ["alloy", "dep:op-alloy-consensus"]
|
op = ["alloy", "dep:op-alloy-consensus"]
|
||||||
|
|||||||
@ -1,9 +1,11 @@
|
|||||||
use super::*;
|
use super::*;
|
||||||
|
use syn::Attribute;
|
||||||
|
|
||||||
/// Generates the flag fieldset struct that is going to be used to store the length of fields and
|
/// Generates the flag fieldset struct that is going to be used to store the length of fields and
|
||||||
/// their potential presence.
|
/// their potential presence.
|
||||||
pub(crate) fn generate_flag_struct(
|
pub(crate) fn generate_flag_struct(
|
||||||
ident: &Ident,
|
ident: &Ident,
|
||||||
|
attrs: &[Attribute],
|
||||||
has_lifetime: bool,
|
has_lifetime: bool,
|
||||||
fields: &FieldList,
|
fields: &FieldList,
|
||||||
is_zstd: bool,
|
is_zstd: bool,
|
||||||
@ -13,6 +15,8 @@ pub(crate) fn generate_flag_struct(
|
|||||||
let flags_ident = format_ident!("{ident}Flags");
|
let flags_ident = format_ident!("{ident}Flags");
|
||||||
let mod_flags_ident = format_ident!("{ident}_flags");
|
let mod_flags_ident = format_ident!("{ident}_flags");
|
||||||
|
|
||||||
|
let reth_codecs = parse_reth_codecs_path(attrs).unwrap();
|
||||||
|
|
||||||
let mut field_flags = vec![];
|
let mut field_flags = vec![];
|
||||||
|
|
||||||
let total_bits = if is_enum {
|
let total_bits = if is_enum {
|
||||||
@ -88,8 +92,9 @@ pub(crate) fn generate_flag_struct(
|
|||||||
pub use #mod_flags_ident::#flags_ident;
|
pub use #mod_flags_ident::#flags_ident;
|
||||||
#[allow(non_snake_case)]
|
#[allow(non_snake_case)]
|
||||||
mod #mod_flags_ident {
|
mod #mod_flags_ident {
|
||||||
use bytes::Buf;
|
use #reth_codecs::__private::Buf;
|
||||||
use modular_bitfield::prelude::*;
|
use #reth_codecs::__private::modular_bitfield;
|
||||||
|
use #reth_codecs::__private::modular_bitfield::prelude::*;
|
||||||
|
|
||||||
#[doc = #docs]
|
#[doc = #docs]
|
||||||
#[bitfield]
|
#[bitfield]
|
||||||
|
|||||||
@ -239,7 +239,7 @@ fn generate_to_compact(fields: &FieldList, ident: &Ident, is_zstd: bool) -> Vec<
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Function to extract the crate path from `reth_codecs(crate = "...")` attribute.
|
/// Function to extract the crate path from `reth_codecs(crate = "...")` attribute.
|
||||||
fn parse_reth_codecs_path(attrs: &[Attribute]) -> syn::Result<syn::Path> {
|
pub(crate) fn parse_reth_codecs_path(attrs: &[Attribute]) -> syn::Result<syn::Path> {
|
||||||
// let default_crate_path: syn::Path = syn::parse_str("reth-codecs").unwrap();
|
// let default_crate_path: syn::Path = syn::parse_str("reth-codecs").unwrap();
|
||||||
let mut reth_codecs_path: syn::Path = syn::parse_quote!(reth_codecs);
|
let mut reth_codecs_path: syn::Path = syn::parse_quote!(reth_codecs);
|
||||||
for attr in attrs {
|
for attr in attrs {
|
||||||
|
|||||||
@ -48,7 +48,7 @@ pub fn derive(input: TokenStream, is_zstd: bool) -> TokenStream {
|
|||||||
let has_lifetime = has_lifetime(&generics);
|
let has_lifetime = has_lifetime(&generics);
|
||||||
|
|
||||||
let fields = get_fields(&data);
|
let fields = get_fields(&data);
|
||||||
output.extend(generate_flag_struct(&ident, has_lifetime, &fields, is_zstd));
|
output.extend(generate_flag_struct(&ident, &attrs, has_lifetime, &fields, is_zstd));
|
||||||
output.extend(generate_from_to(&ident, &attrs, has_lifetime, &fields, is_zstd));
|
output.extend(generate_from_to(&ident, &attrs, has_lifetime, &fields, is_zstd));
|
||||||
output.into()
|
output.into()
|
||||||
}
|
}
|
||||||
@ -235,7 +235,7 @@ mod tests {
|
|||||||
let mut output = quote! {};
|
let mut output = quote! {};
|
||||||
let DeriveInput { ident, data, attrs, .. } = parse2(f_struct).unwrap();
|
let DeriveInput { ident, data, attrs, .. } = parse2(f_struct).unwrap();
|
||||||
let fields = get_fields(&data);
|
let fields = get_fields(&data);
|
||||||
output.extend(generate_flag_struct(&ident, false, &fields, false));
|
output.extend(generate_flag_struct(&ident, &attrs, false, &fields, false));
|
||||||
output.extend(generate_from_to(&ident, &attrs, false, &fields, false));
|
output.extend(generate_from_to(&ident, &attrs, false, &fields, false));
|
||||||
|
|
||||||
// Expected output in a TokenStream format. Commas matter!
|
// Expected output in a TokenStream format. Commas matter!
|
||||||
@ -255,8 +255,9 @@ mod tests {
|
|||||||
|
|
||||||
#[allow(non_snake_case)]
|
#[allow(non_snake_case)]
|
||||||
mod TestStruct_flags {
|
mod TestStruct_flags {
|
||||||
use bytes::Buf;
|
use reth_codecs::__private::Buf;
|
||||||
use modular_bitfield::prelude::*;
|
use reth_codecs::__private::modular_bitfield;
|
||||||
|
use reth_codecs::__private::modular_bitfield::prelude::*;
|
||||||
#[doc = "Fieldset that facilitates compacting the parent type. Used bytes: 2 | Unused bits: 1"]
|
#[doc = "Fieldset that facilitates compacting the parent type. Used bytes: 2 | Unused bits: 1"]
|
||||||
#[bitfield]
|
#[bitfield]
|
||||||
#[derive(Clone, Copy, Debug, Default)]
|
#[derive(Clone, Copy, Debug, Default)]
|
||||||
|
|||||||
@ -39,6 +39,11 @@ pub mod txtype;
|
|||||||
#[cfg(any(test, feature = "test-utils"))]
|
#[cfg(any(test, feature = "test-utils"))]
|
||||||
pub mod test_utils;
|
pub mod test_utils;
|
||||||
|
|
||||||
|
// Used by generated code and doc tests. Not public API.
|
||||||
|
#[doc(hidden)]
|
||||||
|
#[path = "private.rs"]
|
||||||
|
pub mod __private;
|
||||||
|
|
||||||
/// Trait that implements the `Compact` codec.
|
/// Trait that implements the `Compact` codec.
|
||||||
///
|
///
|
||||||
/// When deriving the trait for custom structs, be aware of certain limitations/recommendations:
|
/// When deriving the trait for custom structs, be aware of certain limitations/recommendations:
|
||||||
|
|||||||
3
crates/storage/codecs/src/private.rs
Normal file
3
crates/storage/codecs/src/private.rs
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
pub use modular_bitfield;
|
||||||
|
|
||||||
|
pub use bytes::Buf;
|
||||||
Reference in New Issue
Block a user