当使用newtype模式时,我经常会得到冗长的信息:
extern crate derive_more;
use derive_more::*;
#[derive(Add, Sub, Mul, Div, ..., Copy, Clone, Debug, Eq, PartialEq, Hash, Ord, PartialOrd)]
struct Foo(i32);
Run Code Online (Sandbox Code Playgroud)
有没有一种方法可以将其简化为以下形式:
#[derive(Num)]
struct Foo(i32);
Run Code Online (Sandbox Code Playgroud)
Num派生宏在哪里?
我发现了这一点,但似乎无法扩展属性中的宏。 此答案讨论了必须如何将属性附加到项目,排除了这一点:
#[proc_macro_derive(Num)]
pub fn num_derive(_: TokenStream) -> TokenStream {
let gen = quote! {
#[derive(Add, Sub, Mul, Div, ..., Copy, Clone, Debug, Eq, PartialEq, Hash, Ord, PartialOrd)]
};
gen.into()
}
Run Code Online (Sandbox Code Playgroud) 如果readme Cargo.toml设置了键,doc.rs 会在 crate 的索引页面上呈现 README。在cargo doc本地运行时有没有办法模拟这一点?
如果我添加:
#![doc = r###"contents
of
README.md
here
"###]
Run Code Online (Sandbox Code Playgroud)
作为字面意思,我得到了我正在寻找的行为,但是内联整个 README.md 的副本对于进行更新非常不方便。
我试过:
#![doc = include!("README.md")]
Run Code Online (Sandbox Code Playgroud)
但这给出了一个错误:
error: unexpected token: `include`
--> src/lib.rs:3:10
|
3 | #![doc = include!("README.md")]
| ^^^^^^^
Run Code Online (Sandbox Code Playgroud) Rust的这部分内容似乎暗示可以将Rust文档保存在单独的.md文件中,但是没有说明如何将这些.md文件重新包含在内。这是如何运作的?