考虑一下这句话:From<T> for U意味着Into<U> for T.source

let t="abc";,并注意t的类型为&str

每个人都用过:let s=String::from(t);

所以我们有:From<&str> for String

根据上面的暗示,我们有:Into<String> for &str

但是,以下操作不起作用:

fn main(){
    let z="abc";
    let x = String::from(z);
    let s=&str::into(x);
}

我有什么不明白的吗?

推荐答案

它是可行的,只是&str::into(z)被理解为&(str::into(z)).如果要调用类型&str的关联函数into,则必须使用该类型的限定名:

fn main() {
    let z = "abc";
    let x = String::from(z);
    let s: String = <&str>::into(z);
}

请注意,添加类型注释String是因为否则Rust无法知道哪种类型是into的目标.

否则,您也可以使用方法语法

    let s: String = z.into();

或性状Into的相关功能:

    let s: String = Into::into(z);

Rust相关问答推荐

为什么是!为Rust中的RwLockReadGuard和RwLockWriteGuard实现的发送特征?

rust 迹-内存管理-POP所有权-链表

为潜在的下游实现使用泛型绑定而不是没有泛型绑定的trait

如何go 除铁 rust 中路径组件的第一项和最后一项?

Pin<;&;mut可能将Uninit<;T>;>;合并为Pin<;&;mut T>;

如何在不调用Collect()的情况下为新型vec实现IntoIterator?

为什么`AlternateScreen`在读取输入键时需要按Enter键?

在运行特定测试时,如何 suppress cargo test 的空输出?

期望一个具有固定大小 x 元素的数组,找到一个具有 y 元素的数组

为什么我需要 to_string 函数的参考?

使用 select 处理 SIGINT 和子等待!无阻塞

为什么我的trait 对象类型不匹配?

我如何取消转义,在 Rust 中多次转义的字符串?

Rust/Serde/HTTP:序列化`Option`

切片不能被 `usize` 索引?

无法把握借来的价值不够长寿,请解释

仅当满足外部条件时如何添加到 actix web 的路由

如何在 Rust 中返回通用 struct

如何获得对数组子集的工作可变引用?

在 Traits 函数中设置生命周期的问题