簡體   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