字符串到 str slice,str slice 的生命周期不够长

标签 string static rust slice borrow-checker

<分区>

好的,这是我的 MCVE,马上开始。

fn do_something (string: &'static str) -> Result<&str, isize> {
    Ok(string)
}

fn main() {
    let place = Some("hello".to_string());
    match place {
        Some(input) => {
            let place = &input[..];
            let something = do_something(place);
        }
        _ => (),
    }
}

我似乎想不出一种方法来满足do_something。在我的实际代码中,do_something 是一个库函数,所以我无法更改它的签名。

- 谢谢

最佳答案

如果您无法更改函数的签名,那么您要么需要使用字符串字面量来创建 &'static str,要么会泄漏内存。

即要么这样做:

do_something("hello");

或者这个(坏主意,可能会失败,只适用于夜间):

let place = Some("hello".to_string());
if let Some(s) = place {
    do_something(unsafe { std::mem::transmute(s.into_boxed_str()) });
}

关于字符串到 str slice,str slice 的生命周期不够长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33020441/

相关文章:

python - 输入文件、修改列、输出文件

string - [..] 对 Rust 切片意味着什么,它叫什么?

node.js - 如何使用静态方法扩展类?

java - 因为它只有静态成员而声明一个类抽象是不是糟糕的设计?

parallel-processing - 如何使用 Rayon 检测整数总和的溢出?

rust - 使用换行符调试特征实现

c++ - 第二个空格字符之后的字符串

r - 如何删除字符串中的 "' s"?

Java static final String 有意想不到的内容

rust - 使用 serde 序列化时如何对 HashMap 键进行排序?