gpt4 book ai didi

rust - Err 不接受已转换的参数 "to_string"

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

我正在尝试使用格式化消息返回错误。

let msg = format!("wrong num of dimensions: {}", dimensions.len()).to_string();
return Err(msg);

dimensionsVec<i32>那应该有 3 的长度。如果不是,我想提出这个错误。但是,我收到此编译器错误:

   Compiling advent02 v0.1.0 (file:///home/garrett/notes/rust/advent/advent02)
src/main.rs:19:24: 19:27 error: mismatched types:
expected `&str`,
found `collections::string::String`
(expected &-ptr,
found struct `collections::string::String`) [E0308]
src/main.rs:19 return Err(msg);
^~~

在我看来它想要一个 &str当我给它一个 String 时输入类型。我试图从 this example 做到这一点但会出现借用错误,因为返回的字符串借用超出了范围。

我不明白因为this page到处都是做Err(err.to_string())的例子,而且他们似乎没有问题。

最佳答案

函数的返回类型是 Result<T, &str> ,这就是编译器提示的原因。您创建一个 String例如,引用它并尝试返回。当函数返回时,String实例被释放,您返回的引用将无效(悬空指针)。

我会更改函数的签名以返回 Result<T, String> .这样,您就可以将字符串移出函数而不释放它。

关于rust - Err 不接受已转换的参数 "to_string",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34702850/

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