在学习rust的过程中, 发现一些有用的命令, 记录之.
cargo subcommands
cargo 子命令(cargo subcommands)是一种有用的机制, 可以对名为cargo-xxx
的命令通过 cargo xxx
来调用.
cargo官方整理了一份cargo subcommands在这里:
https://github.com/rust-lang/cargo/wiki/Third-party-cargo-subcommands
cargo-expand
可以将rust中的宏展开.
代码仓库: https://github.com/dtolnay/cargo-expand
例子:
cargo new demo
修改main.rs内容如下:
rust
#[derive(Debug)]
struct User {
name: String,
age: u8,
}
fn main() {
let u = User{
name: String::from("John"),
age: 30,
};
println!("{:?}", u);
}
运行cargo expand
, 效果:
rust
#![feature(prelude_import)]
#[prelude_import]
use std::prelude::rust_2021::*;
#[macro_use]
extern crate std;
struct User {
name: String,
age: u8,
}
#[automatically_derived]
impl ::core::fmt::Debug for User {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(
f,
"User",
"name",
&self.name,
"age",
&&self.age,
)
}
}
fn main() {
let u = User {
name: String::from("John"),
age: 30,
};
{
::std::io::_print(format_args!("{0:?}\n", u));
};
}
这样方便我们了解宏展开的效果.
其他
tokei
统计代码, 据说是非常快. 我用过的统计代码的工具还有 https://github.com/AlDanial/cloc.
这里简单做个比较, 统计的仓库是 neo4j的5.4版本 :
可以看到, tokei统计的文件数比cloc要多, 应该是两个命令默认的规则不一样. 时间上面 tokei 是"秒出结果", 而cloc总用时11秒多.
确实如 tokei 介绍的一样: Tokei is very fast