Kun

Kun

IT学徒、技术民工、斜杠青年,机器人爱好者、摄影爱好 PS、PR、LR、达芬奇潜在学习者


共 212 篇文章


目录

rust第六篇,用rust写的通用工具

just

just 为您提供一种保存和运行项目特有命令的便捷方式。

命令,在此也称为配方,存储在一个名为 justfile 的文件中,其语法受 make 启发:

然后你可以用 just RECIPE 运行它们

$ just test-all
cc *.c -o main
./test --all
Yay, all your tests passed!

just 有很多很棒的特性,而且相比 make 有很多改进:

  • just 是一个命令运行器,而不是一个构建系统,所以它避免了许多 make 的复杂性和特异性。不需要 .PHONY 配方!
  • 支持 Linux、MacOS 和 Windows,而且无需额外的依赖。(尽管如果你的系统没有 sh,你需要 选择一个不同的 Shell)。
  • 错误具体且富有参考价值,语法错误将会与产生它们的上下文一起被报告。
  • 配方可以接受 命令行参数
  • 错误会尽可能被静态地解决。未知的配方和循环依赖关系会在运行之前被报告。
  • just 可以 加载.env文件,简化环境变量注入。
  • 配方可以在 命令行中列出
  • 命令行自动补全脚本 支持大多数流行的 Shell
  • 配方可以用 任意语言 编写,如 Python 或 NodeJS。
  • just 可以从任何子目录中调用,而不仅仅是包含 justfile 的目录。

https://github.com/casey/just

Typeshare

支持在其他语言中无缝接入Rust中的类型, 支持语言包括typescript、kotlin、swift、scala、go

在Cargo.toml中加入依赖

typeshare = "1.0.0"

rust中的类型

// Rust type definitions

#[typeshare]
struct MyStruct {
    my_name: String,
    my_age: u32,
}

#[typeshare]
#[serde(tag = "type", content = "content")]
enum MyEnum {
    MyVariant(bool),
    MyOtherVariant,
    MyNumber(u32),
}

生成的typescript类型

// Generated Typescript definitions

export interface MyStruct {
    my_name: string;
    my_age: number;
}

export type MyEnum = 
    | { type: "MyVariant", content: boolean }
    | { type: "MyOtherVariant", content: undefined }
    | { type: "MyNumber", content: number };
如果你觉得我的文章对你有帮助的话,希望可以推荐和交流一下。欢迎關注和 Star 本博客或者关注我的 Github