好的,这就是我的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
是一个库函数,因此我无法更改它的签名。
- 谢谢
答案 0 :(得分:0)
如果您无法更改函数的签名,则需要使用字符串文字来创建&'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()) });
}