extends_rs/
lib.rs

1mod extends;
2extern crate proc_macro;
3extern crate proc_macro2;
4use proc_macro::TokenStream;
5extern crate pest;
6#[macro_use]
7extern crate pest_derive;
8
9
10    ///
11    /// 实现继承struct 内部的属性与impl 函数,不建议用在复杂的结构体作为父级
12    /// 使用:
13    /// #[extends_struct(derive="Debug,Clone"&&extends="rsdata::dbs::arbatis::base_struct::BaseDO@struct")]
14    /// struct 子结构体{
15    ///     子结构体必须要有内容
16    /// }
17    /// 会持续更新,不过基于实际应用开发变更,之后会被实现  IOC  AOP  Single  thread基于属性宏的实现 底部 基于 once,dashMap,parking_lot,pest
18    /// 版本0.1.6 将是这个继承方案的稳定版本,后续不会在这个内容上改动,但会有新的内容出现
19    /// ```
20    ///  #[extends_struct()];
21    /// ```
22#[allow(warnings)]
23#[proc_macro_attribute]
24pub fn extends_struct(_attr: TokenStream, _input: TokenStream) -> TokenStream {
25    extends::all_extends::impl_extends(_attr, _input)
26}
27
28
29
30#[test]
31fn name() {
32    extends::all_extends::path_split("rsdata::dbs::arbatis::base_struct::BaseDO@struct".to_string());
33}
34
35
36    //rsdata::dbs::arbatis::base_struct::BaseDO*struct
37    //同级crate 中 rsdata/src/dbs/arbatis/base_struct.rs   struct BaseDO
38    //如果不存在向上一级寻找  仅1次 
39    // #[extends_struct(derive="Debug,Clone"&&extends="rsdata::dbs::arbatis::base_struct::BaseDO*struct")]
40    // struct bbc {
41    //     pub a: Option<i8>,
42    // }
43
44    // #[test]
45    // fn showa() {
46    //     println!("{:#?}", bbc::new_none());
47    //     let mut a = bbc::new_none();
48    //     a.result = Some(false);
49    //     println!("{:#?}", a);
50    //     println!("aaffff:{:?}", bbc::get_struct_attr_str());
51
52    // }