gpt4 book ai didi

methods - 在没有引用的子切片上调用方法

转载 作者:行者123 更新时间:2023-11-29 08:05:48 27 4
gpt4 key购买 nike

通常在 Rust 中,由于 str 的大小未知,您不能在不获取其引用的情况下将某些内容的(子)切片分配给局部变量:

let s = "hello";
let x = s[..]; // doesn't compile
let y = &s[..]; // ok

但是,我注意到您可以直接在切片上调用方法:

let x = s[..].to_owned(); // ok
let y = (&s[..]).to_owned(); // ok

这两种方式在语义和性能方面有什么区别吗?

最佳答案

这是由于 Rust 的自动引用规则。当您调用一个采用 &self(例如 to_owned)值而不是引用的方法时,Rust 会自动采用引用来调用该方法。

代码可以编译,因为除非通过引用,否则永远不会访问未调整大小的类型。

关于methods - 在没有引用的子切片上调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57342676/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com