繁体   English   中英

为什么String :: find不是&str的方法?

[英]Why is String::find not a method on &str?

我最近注意到String::find实际上是一个拥有String的方法。

但我不明白为什么它不仅仅是&str的方法,而是在更多的情况下使用它(并且仍然对String有用)。 我错过了为什么会这样,或者只是一次历史性事故?

显然,文档困惑了你。 此方法列在本节下面:

来自Deref <Target = str>的方法

所以它甚至没有为String实现,但实际上只是为了&str

实际上它只适用于String因为它可以Derefstr

Methods from Deref<Target=str>

您不会在String的源代码中找到它,而是在str 的源代码中找到它。

实际上......你错了:它不是String方法。

你在看什么是str::find

事实上,Rust文档会自动在String页面上包含String实现Deref<Target=str>这一事实所引入的方法, 如此处所示


为什么文档中包含可以在Deref目标上Deref

因为您实际上可以直接在String对象上调用它们,因为如果找不到您正在调用的方法,编译器将自动跟随Deref

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM