< 返回版块

Cupnfish 发表于 2022-01-06 21:50

【博文】把include_dir带入现代

include_dir这个crate提供了一个include_dir!()宏,用于在编译时将整个目录树嵌入你的二进制文件中。这就像include_str!(),但针对整个目录。

我最近做了大量的工作来改善这个crate,增加了想要的功能,改善了编译时间,并巩固了它的核心目标,所以我觉得有必要进行项目更新。

我也想利用这篇博文作为一个机会,征求大家的评论。如果有更多的人关注这个crate,那将是非常好的,而使用像CREV这样的公共审查系统会让人们更有信心在生产中使用include_dir。你可以查看入门指南以了解更多。

Read More: https://adventures.michaelfbryan.com/posts/bringing-include_dir-into-the-modern-era/?utm_source=reddit&utm_medium=social&utm_campaign=modern-include-dir

我的第一个Rust应用,git智能签出,模糊搜索分支,我有点喜欢这门语言❤️🦀

作者的第一个Rust项目,发了一个帖子,热评帮忙做了代码review,给出了一些建议。

preview

我记性不是很好,因此平时做了一些笔记。

这是一些小建议,在你将来写Rust时应该会有帮助。

  • https://github.com/craciuncezar/git-smart-checkout/blob/main/src/git_client.rs#L7 这些都可以只是函数。Rust不是OOP,所以如果你不需要状态,不需要用结构把所有这些东西绑定在一起也是可以的。

  • 对于GitBranch,你可以只需要[derive(Clone)]而不是自己实现它。https://github.com/craciuncezar/git-smart-checkout/blob/main/src/git_client/git_branch.rs#L4 参考文献:https://doc.rust-lang.org/rust-by-example/trait/derive.html

  • 在Rust中,如果你能在可能的情况下将clone给调用者负责,而不是自己去做,那是最好的,在 https://github.com/craciuncezar/git-smart-checkout/blob/main/src/git_client/utils.rs#L3 ,我认为to_vec在底层做了一个clone。我的意思是,如果你需要某个东西的明确拷贝,就用所有权而不是引用,但让调用者决定他是想给你所有权还是克隆这个值给你。

  • 在这个只在一个地方使用的fn的具体案例中,我认为你一般不需要它,但如果你要在多个地方使用它,你可以把Vec传成可变的,并立即排序,不需要clone。你也可以将Vec<GitBranch>包装成一个新的类型,并为其实现fn https://rust-unofficial.github.io/patterns/patterns/behavioural/newtype.html。

  • 你的模块和类型的另一种构造可以是gitgit::clientgit::client::switch_to_branchgit::Branch

  • 当把一个Vec引用传递给一个函数时,通常作为切片接收:branches: &[GitBranch]更方便。调用代码保持不变,但现在可以传递数组以及Vec去调用该函数。通常情况下,String&str也是如此。

  • 我看到你有很多的unwrap。我建议是试一下anyhow。你会发现错误处理会变的容易。

Read More: https://libreddit.spike.codes/r/rust/comments/rwwa35/media_my_first_rust_app_git_smart_checkout_fuzzy/

另外本帖作者提到《Rust设计模式(Rust Design Patterns)》这本书,感兴趣的也可以看看。

本周周报

我在twitter上进行了一次极其科学的民意调查,并确定这不是它的发音: https://twitter.com/at_tcsc/status/1476643344285581315

pronounced

确实, 它本质上是一个Vec<T, A>, 发音为 Veck-tah。 😛

听着,我搬离波士顿是为了避免这类事情😆。

-the8472 和 Thom Chiovoloni 在 github 上评论

Read More: https://this-week-in-rust.org/blog/2022/01/05/this-week-in-rust-424/

From 日报小组 Cupnfish

社区学习交流平台订阅:

评论区

写评论
zzliujianbo 2022-01-06 23:00

学习!

1 共 1 条评论, 1 页