sunnyregion 发表于 2021-06-21 12:08
我使用struct作为继承的方式,我想获得当前struct的名字,当然最好也可以获得父struct的名字最好
谢谢
-- 👇 苦瓜小仔: http://129.28.186.100/tlborm/macros/minutiae/scoping.html
http://129.28.186.100/tlborm/macros/minutiae/import-export.html
-- 👇 sunnyregion: 顺便问一下,这个宏怎么能够全局使用?
-- 👇 sunnyregion: Thx a lot.
-- 👇 苦瓜小仔: 只有宏能做到获取 identifier 的名称。
使用声明宏:
macro_rules! struct_names { (struct $name:ident { $($fname:ident : $ftype:ty),* }) => { #[allow(dead_code)] struct $name { $($fname : $ftype),* } impl $name { const fn field_names() -> &'static[&'static str] { &[$(stringify!($fname)),*] } const fn struct_name() -> &'static str{ stringify!($name) } } } } struct_names! { struct Export { first_name: String, last_name: String, gender: String, date_of_birth: String, address: String } } fn main() { println!("{}\n{:?} ", Export::struct_name(), Export::field_names(),); // Export // ["first_name", "last_name", "gender", "date_of_birth", "address"] }
参考:https://stackoverflow.com/questions/37140768/how-to-get-struct-field-names-in-rust
过程宏应该也可以获得名称。
的确, Rust 没有继承的概念。
http://129.28.186.100/tlborm/macros/minutiae/scoping.html
顺便问一下,这个宏怎么能够全局使用?
Thx a lot.
只有宏能做到获取 identifier 的名称。
Rust没有字段继承的概念,社区常用做法都是通过扩展实现类似效果
就像ruby_on_rails给String extend了一堆方法,你可以参考下FutureExt
用 Ext 或者 结构体包起来能解决绝大部分抽象了,没有必要非要用继承
评论区
写评论谢谢
--
👇
苦瓜小仔: http://129.28.186.100/tlborm/macros/minutiae/scoping.html
http://129.28.186.100/tlborm/macros/minutiae/import-export.html
--
👇
sunnyregion: 顺便问一下,这个宏怎么能够全局使用?
--
👇
sunnyregion: Thx a lot.
--
👇
苦瓜小仔: 只有宏能做到获取 identifier 的名称。
使用声明宏:
参考:https://stackoverflow.com/questions/37140768/how-to-get-struct-field-names-in-rust
过程宏应该也可以获得名称。
的确, Rust 没有继承的概念。
http://129.28.186.100/tlborm/macros/minutiae/scoping.html
http://129.28.186.100/tlborm/macros/minutiae/import-export.html
--
👇
sunnyregion: 顺便问一下,这个宏怎么能够全局使用?
--
👇
sunnyregion: Thx a lot.
--
👇
苦瓜小仔: 只有宏能做到获取 identifier 的名称。
使用声明宏:
参考:https://stackoverflow.com/questions/37140768/how-to-get-struct-field-names-in-rust
过程宏应该也可以获得名称。
的确, Rust 没有继承的概念。
顺便问一下,这个宏怎么能够全局使用?
--
👇
sunnyregion: Thx a lot.
--
👇
苦瓜小仔: 只有宏能做到获取 identifier 的名称。
使用声明宏:
参考:https://stackoverflow.com/questions/37140768/how-to-get-struct-field-names-in-rust
过程宏应该也可以获得名称。
的确, Rust 没有继承的概念。
Thx a lot.
--
👇
苦瓜小仔: 只有宏能做到获取 identifier 的名称。
使用声明宏:
参考:https://stackoverflow.com/questions/37140768/how-to-get-struct-field-names-in-rust
过程宏应该也可以获得名称。
的确, Rust 没有继承的概念。
只有宏能做到获取 identifier 的名称。
使用声明宏:
参考:https://stackoverflow.com/questions/37140768/how-to-get-struct-field-names-in-rust
过程宏应该也可以获得名称。
的确, Rust 没有继承的概念。
Rust没有字段继承的概念,社区常用做法都是通过扩展实现类似效果
就像ruby_on_rails给String extend了一堆方法,你可以参考下FutureExt
用 Ext 或者 结构体包起来能解决绝大部分抽象了,没有必要非要用继承