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

Chr*_*son 3 string slice rust

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

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

Luk*_*odt 8

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

来自Deref <Target = str>的方法

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


lje*_*drz 5

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

Methods from Deref<Target=str>
Run Code Online (Sandbox Code Playgroud)

你不会在String的源代码中找到它,但是在源代码中str找到它.


Mat*_* M. 5

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

你在看什么str::find.

碰巧的是生锈的文档会自动包含在String该方法由事实带来了网页String实现Deref<Target=str>可以在这里看到.


为什么文档中包含可以在目标上调用的方法Deref

因为您实际上可以直接在String对象上调用它们,因为Deref如果它没有找到您正在调用的方法,则会自动跟进.