何时使用引用与类型对比框和切片与向量作为参数和返回类型?

时间:2016-03-30 00:20:30

标签: memory-management types rust

过去几天我一直在与Rust合作建立一个新的库(与抽象代数相关),而且我正在努力学习该语言的一些最佳实践。例如,我实现了一个最长的公共子序列函数,对序列采用&[&T]。我认为这是Rust惯例,因为它避免了复制数据(T,这可能不容易复制,或者可能很大)。当我更改我的算法以使用更简单的&[T]时,我需要在我的代码中的其他地方使用,我被迫放入Copy类型约束,因为它需要复制T而且不只是复制参考。

所以我的更高层次的问题是:在长时间运行的进程中,线程和结构之间传递数据的最佳实践是什么,例如响应需要大数据处理的查询的服务器?任何特异性都非常有用,因为我发现很少。您通常想通过引用传递参数吗?你是否一般想避免在Rust书中读到引用时返回引用?使用&[&T]&[T]Vec<T>Vec<&T>更好吗?为什么?返回Box<T>T会更好吗?我意识到这里的“更好”这个词是非常不明确的,但是希望你能理解我的意思 - 在定义函数和结构时,我应该考虑哪些陷阱,以避免以后意识到我的愚蠢并且不得不重构一切?

也许另一种说法是,我的大脑应该遵循什么样的“算法”来确定我应该使用引用与盒子对普通类型,以及切片与数组与向量的对应关系?我不愿意开始使用引用和Box<T>返回各处,因为我认为这会让我产生一种“Rust in Rust”效果,这不是我想要的!

0 个答案:

没有答案