mirror of
https://codeberg.org/icewind/bitbuffer.git
synced 2026-06-04 00:54:07 +02:00
remove the need for "full" syn
This commit is contained in:
parent
2ab425356e
commit
bbbce0f8cf
3 changed files with 15 additions and 9 deletions
|
|
@ -12,7 +12,7 @@ name = "bitstream_reader_derive"
|
||||||
proc-macro = true
|
proc-macro = true
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
syn = { version = "0.15", features = ["full"] }
|
syn = { version = "0.15" }
|
||||||
quote = "0.6"
|
quote = "0.6"
|
||||||
proc-macro2 = "0.4"
|
proc-macro2 = "0.4"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -140,7 +140,7 @@ use quote::{quote, quote_spanned};
|
||||||
use syn::spanned::Spanned;
|
use syn::spanned::Spanned;
|
||||||
use syn::{
|
use syn::{
|
||||||
parse_macro_input, parse_quote, parse_str, Attribute, Data, DeriveInput, Expr, Fields, Ident,
|
parse_macro_input, parse_quote, parse_str, Attribute, Data, DeriveInput, Expr, Fields, Ident,
|
||||||
Lit, LitStr, Meta, Pat, Path,
|
Lit, LitStr, Meta, Path,
|
||||||
};
|
};
|
||||||
|
|
||||||
/// See the [crate documentation](index.html) for details
|
/// See the [crate documentation](index.html) for details
|
||||||
|
|
@ -151,7 +151,7 @@ use syn::{
|
||||||
pub fn derive_bitread(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
|
pub fn derive_bitread(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
|
||||||
derive_bitread_trait(input, "BitRead".to_owned(), None)
|
derive_bitread_trait(input, "BitRead".to_owned(), None)
|
||||||
}
|
}
|
||||||
|
//
|
||||||
/// See the [crate documentation](index.html) for details
|
/// See the [crate documentation](index.html) for details
|
||||||
#[proc_macro_derive(
|
#[proc_macro_derive(
|
||||||
BitReadSized,
|
BitReadSized,
|
||||||
|
|
@ -304,10 +304,6 @@ fn parse(data: &Data, struct_name: &Ident, attrs: &Vec<Attribute>) -> TokenStrea
|
||||||
.map(|(variant, discriminant)| {
|
.map(|(variant, discriminant)| {
|
||||||
let span = variant.span();
|
let span = variant.span();
|
||||||
let variant_name = &variant.ident;
|
let variant_name = &variant.ident;
|
||||||
let discriminant_string = discriminant
|
|
||||||
.map(|value| value.to_string())
|
|
||||||
.unwrap_or("_".to_string());
|
|
||||||
let discriminant = parse_str::<Pat>(discriminant_string.as_str()).unwrap();
|
|
||||||
let read_fields = match &variant.fields {
|
let read_fields = match &variant.fields {
|
||||||
Fields::Unit => quote_spanned! {span=>
|
Fields::Unit => quote_spanned! {span=>
|
||||||
#struct_name::#variant_name
|
#struct_name::#variant_name
|
||||||
|
|
@ -332,9 +328,16 @@ fn parse(data: &Data, struct_name: &Ident, attrs: &Vec<Attribute>) -> TokenStrea
|
||||||
}
|
}
|
||||||
_ => unimplemented!(),
|
_ => unimplemented!(),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
if let Some(discriminant) = discriminant {
|
||||||
quote_spanned! {span=>
|
quote_spanned! {span=>
|
||||||
#discriminant => #read_fields,
|
#discriminant => #read_fields,
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
quote_spanned! {span=>
|
||||||
|
_ => #read_fields,
|
||||||
|
}
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
let span = data.enum_token.span();
|
let span = data.enum_token.span();
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,6 @@
|
||||||
|
#![allow(dead_code)]
|
||||||
|
#![allow(unreachable_patterns)]
|
||||||
|
|
||||||
use bitstream_reader::{
|
use bitstream_reader::{
|
||||||
bit_size_of, bit_size_of_sized, BigEndian, BitBuffer, BitStream, Endianness, LittleEndian,
|
bit_size_of, bit_size_of_sized, BigEndian, BitBuffer, BitStream, Endianness, LittleEndian,
|
||||||
};
|
};
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue