diff options
author | JSDurand <mmemmew@gmail.com> | 2023-01-13 14:25:40 +0800 |
---|---|---|
committer | JSDurand <mmemmew@gmail.com> | 2023-01-13 14:25:40 +0800 |
commit | 3c6511f69c7639abff60ac9999a08ce2daa24a7d (patch) | |
tree | b39aa27a4c5454a4b0203faccd57e4136dbbe663 | |
parent | 1a3d346f413325ed37848a6b2526e8e729269833 (diff) |
macro: try to write a macro for inhereting graphs
An attempt to write a derive macro to automatically derive the various
graph traits.
-rw-r--r-- | graph_macro/Cargo.toml | 11 | ||||
-rw-r--r-- | graph_macro/src/lib.rs | 12 | ||||
-rw-r--r-- | graph_macro/tests/works.rs | 13 |
3 files changed, 36 insertions, 0 deletions
diff --git a/graph_macro/Cargo.toml b/graph_macro/Cargo.toml new file mode 100644 index 0000000..1e4c4db --- /dev/null +++ b/graph_macro/Cargo.toml @@ -0,0 +1,11 @@ +[package] +name = "graph_macro" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[lib] +proc-macro = true + +[dependencies] diff --git a/graph_macro/src/lib.rs b/graph_macro/src/lib.rs new file mode 100644 index 0000000..5a0672b --- /dev/null +++ b/graph_macro/src/lib.rs @@ -0,0 +1,12 @@ +//! This file provides a macro to delegate the implementation of a +//! type that wraps a graph. More precisely, the macro helps the +//! wrapper type implement the various Graph-related traits. + +use proc_macro::TokenStream; + +#[proc_macro_derive(Testing)] +pub fn test_derive(input: TokenStream) -> TokenStream { + println!("input: {input:?}"); + + TokenStream::new() +} diff --git a/graph_macro/tests/works.rs b/graph_macro/tests/works.rs new file mode 100644 index 0000000..fe8a853 --- /dev/null +++ b/graph_macro/tests/works.rs @@ -0,0 +1,13 @@ +#![allow(dead_code)] + +use graph_macro::Testing; + +#[derive(Debug, Testing)] +struct Haha { + size: usize, +} + +#[test] +fn it_works() { + println!("it works: {:?}", Haha { size: 0 }); +} |