首页 > 解决方案 > 为什么 len() 和 is_empty() 没有在特征中定义?

问题描述

Rust 中的大多数模式都由特征(Iterator, From,Borrow等)捕获。

len为什么像/一样普遍的模式is_empty在标准库中没有相关特征?这会导致我没有预见到的问题吗?它被认为是无用的吗?还是只是没有人想到它(这似乎不太可能)?

标签: rusttraits

解决方案


它被认为是无用的吗?

我猜这就是原因。

知道某物是空的或长度为 15 的情况下,你能做什么?几乎什么都没有,除非你也有办法访问集合的元素。统一集合的特征是Iterator. 特别是迭代器可以告诉你它的底层集合有多少元素,但它还可以做更多的事情。

另请注意,如果您需要一个Emptytrait,您可以为所有标准集合创建一个并实现它,这与大多数语言中的接口不同。这就是特质的力量。这也意味着标准库不需要为每个用例提供小的实用程序特征,它们可以由库提供!


推荐阅读