From 03c32a41b6c7f5d3be421bbd4fa32512f532c49d Mon Sep 17 00:00:00 2001 From: C191239 Date: Tue, 19 Mar 2024 23:02:55 +0800 Subject: [PATCH] init edcode-macros lib --- crates/util/edcode-macros/Cargo.toml | 26 ++++++++++++++++++++++++++ crates/util/edcode-macros/src/lib.rs | 9 +++++++++ crates/util/edcode/Cargo.toml | 2 ++ crates/util/edcode/src/lib.rs | 3 +++ 4 files changed, 40 insertions(+) create mode 100644 crates/util/edcode-macros/Cargo.toml create mode 100644 crates/util/edcode-macros/src/lib.rs diff --git a/crates/util/edcode-macros/Cargo.toml b/crates/util/edcode-macros/Cargo.toml new file mode 100644 index 0000000..d640ffe --- /dev/null +++ b/crates/util/edcode-macros/Cargo.toml @@ -0,0 +1,26 @@ +[package] +name = "rimecraft-edcode-macros" +version = "0.1.0" +edition = "2021" +authors = ["C191239 "] +description = "Derive macros for rimecraft-edcode" +repository = "https://github.com/rimecraft-rs/rimecraft/" +license = "AGPL-3.0-or-later" +categories = ["encoding"] + +[badges] +maintenance = { status = "passively-maintained" } + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +syn = { version = "2.0" } + +[dev-dependencies] +rimecraft-edcode = { path = "../edcode" } + +[lints] +workspace = true + +[lib] +proc-macro = true diff --git a/crates/util/edcode-macros/src/lib.rs b/crates/util/edcode-macros/src/lib.rs new file mode 100644 index 0000000..52594cf --- /dev/null +++ b/crates/util/edcode-macros/src/lib.rs @@ -0,0 +1,9 @@ +//! Proc-macros for deriving [`rimecraft_edcode`] traits. + +use proc_macro::TokenStream; + +/// Derive [`rimecraft_edcode::Encode`] to types. +#[proc_macro_derive(Encode)] +pub fn derive_encode(_input: TokenStream) -> TokenStream { + TokenStream::new() +} diff --git a/crates/util/edcode/Cargo.toml b/crates/util/edcode/Cargo.toml index 2c0cdfb..01be8c9 100644 --- a/crates/util/edcode/Cargo.toml +++ b/crates/util/edcode/Cargo.toml @@ -14,6 +14,7 @@ maintenance = { status = "passively-maintained" } [dependencies] bytes = "1.5" serde = { version = "1.0", optional = true } +rimecraft-edcode-macros = { path = "../edcode-macros", optional = true } # custom formats fastnbt = { version = "2.4", optional = true } serde_json = { version = "1.0", optional = true } @@ -24,6 +25,7 @@ glam = { version = "0.25", optional = true } [features] # default = ["serde", "nbt", "json", "uuid", "glam"] serde = ["dep:serde"] +macros = ["dep:rimecraft-edcode-macros"] # custom formats fastnbt = ["serde", "dep:fastnbt"] json = ["serde", "dep:serde_json"] diff --git a/crates/util/edcode/src/lib.rs b/crates/util/edcode/src/lib.rs index 0eedda4..35f3fd3 100644 --- a/crates/util/edcode/src/lib.rs +++ b/crates/util/edcode/src/lib.rs @@ -9,6 +9,9 @@ use std::io; pub use bytes; +#[cfg(feature = "macros")] +pub use rimecraft_edcode_macros::Encode; + /// Describes types that can be encoded into a packet buffer. pub trait Encode { /// Encode into a buffer.