Enable unstable feature doc_auto_cfg

This commit is contained in:
2025-08-14 17:05:53 +08:00
parent b5189695df
commit 243394db6c
5 changed files with 19 additions and 18 deletions

View File

@@ -1,6 +1,6 @@
[package]
name = "msg_tool_macro"
version = "0.1.0"
version = "0.1.4"
edition = "2024"
repository = "https://github.com/lifegpc/msg-tool"
description = "A procedural macro for the msg-tool project."
@@ -15,3 +15,6 @@ artemis-arc = []
[dependencies]
syn = { version = "2", features = ["full"] }
quote = "1"
[package.metadata.docs.rs]
all-features = true

View File

@@ -1,3 +1,4 @@
#![feature(doc_auto_cfg)]
use proc_macro::TokenStream;
use syn::parse::discouraged::Speculative;
use syn::spanned::Spanned;
@@ -197,10 +198,10 @@ pub fn struct_pack_derive(input: TokenStream) -> TokenStream {
}
});
} else if let Some(pstring_type) = pstring_type {
let write_fn = syn::Ident::new(format!("write_{}", pstring_type).as_str(), pstring_type.span());
cur = Some(quote::quote! {
let encoded = crate::utils::encoding::encode_string(encoding, &self.#field_name, true)?;
writer.#write_fn(encoded.len() as #pstring_type)?;
let len = encoded.len() as #pstring_type;
len.pack(writer, big, encoding)?;
writer.write_all(&encoded)?;
});
}
@@ -218,10 +219,9 @@ pub fn struct_pack_derive(input: TokenStream) -> TokenStream {
}
});
} else if let Some(pvec_type) = pvec_type {
let write_fn = syn::Ident::new(format!("write_{}", pvec_type).as_str(), pvec_type.span());
cur = Some(quote::quote! {
let len = self.#field_name.len() as #pvec_type;
writer.#write_fn(len)?;
len.pack(writer, big, encoding)?;
for item in &self.#field_name {
item.pack(writer, big, encoding)?;
}
@@ -381,10 +381,10 @@ pub fn struct_pack_derive(input: TokenStream) -> TokenStream {
}
});
} else if let Some(pstring_type) = pstring_type {
let write_fn = syn::Ident::new(format!("write_{}", pstring_type).as_str(), pstring_type.span());
cur = Some(quote::quote! {
let encoded = crate::utils::encoding::encode_string(encoding, &#field_name, true)?;
writer.#write_fn(encoded.len() as #pstring_type)?;
let len = encoded.len() as #pstring_type;
len.pack(writer, big, encoding)?;
writer.write_all(&encoded)?;
});
}
@@ -402,10 +402,9 @@ pub fn struct_pack_derive(input: TokenStream) -> TokenStream {
}
});
} else if let Some(pvec_type) = pvec_type {
let write_fn = syn::Ident::new(format!("write_{}", pvec_type).as_str(), pvec_type.span());
cur = Some(quote::quote! {
let len = #field_name.len() as #pvec_type;
writer.#write_fn(len)?;
len.pack(writer, big, encoding)?;
for item in &#field_name {
item.pack(writer, big, encoding)?;
}
@@ -587,9 +586,8 @@ pub fn struct_unpack_derive(input: TokenStream) -> TokenStream {
let #field_name = reader.read_fstring(#fixed_string, encoding, #trim)?;
});
} else if let Some(pstring_type) = pstring_type {
let read_fn = syn::Ident::new(format!("read_{}", pstring_type).as_str(), pstring_type.span());
cur = Some(quote::quote! {
let len = reader.#read_fn()? as usize;
let len = <#pstring_type>::unpack(&mut reader, big, encoding)? as usize;
let #field_name = reader.read_exact_vec(len)?;
let #field_name = crate::utils::encoding::decode_to_string(encoding, &#field_name, true)?;
});
@@ -603,9 +601,8 @@ pub fn struct_unpack_derive(input: TokenStream) -> TokenStream {
let #field_name = reader.read_struct_vec(#fixed_vec, big, encoding)?;
});
} else if let Some(pvec_type) = pvec_type {
let read_fn = syn::Ident::new(format!("read_{}", pvec_type).as_str(), pvec_type.span());
cur = Some(quote::quote! {
let len = reader.#read_fn()? as usize;
let len = <#pvec_type>::unpack(&mut reader, big, encoding)? as usize;
let #field_name = reader.read_struct_vec(len, big, encoding)?;
});
}