gpt4 book ai didi

rust - 函数什么时候可以返回引用?

转载 作者:行者123 更新时间:2023-12-03 11:41:24 24 4
gpt4 key购买 nike

我正在尝试Rust,发现了我无法理解的怪异之处。通常,编译器会禁止函数返回没有静态生存期的引用(例如String&'static str,但绝不要&str)。

但是,此代码编译并工作:

fn f(_: &Vec<u8>) -> &str {
"Hello, world!"
}

而此代码没有:
fn f() -> &str {
"Hello, world!"
}

当第一个函数返回对下降值的引用时,为什么它起作用?

最佳答案

这是lifetime elision在没有输入参数的函数上不起作用。

第一种方法扩展为:

fn f<'a>(_: &'a Vec<u8>) -> &'a str {

第二种方法是链接文档中的“ILLEGAL”示例。

因此,您必须自己定义它:
fn f<'a>() -> &'a str {

...或静态:
fn f() -> &'static str {

关于rust - 函数什么时候可以返回引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61182643/

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