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项目,发了一个帖子,热评帮忙做了代码review,给出了一些建议。
我记性不是很好,因此平时做了一些笔记。
这是一些小建议,在你将来写Rust时应该会有帮助。
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.htmlclone
给调用者负责,而不是自己去做,那是最好的,在 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。git
、git::client
、git::client::switch_to_branch
、git::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)》这本书,感兴趣的也可以看看。