gpt4 book ai didi

rust - 如何将文字值转换为特征对象?

转载 作者:行者123 更新时间:2023-11-29 07:49:21 24 4
gpt4 key购买 nike

我正在努力使这段代码更简洁并摆脱冗余变量。有可能吗?

trait Foo {}
impl Foo for i32 {}
impl Foo for String {}

fn main() {
let xi32: i32 = 10;
let y = String::from("ooo");
let mut foo_list: Vec<&Foo> = vec![];
foo_list.push(&xi32 as &Foo);
foo_list.push(&y as &Foo);
}

以下变体不起作用:

foo_list.push(10 as Foo);
error[E0620]: cast to unsized type: `{integer}` as `Foo`
--> src/main.rs:11:19
|
11 | foo_list.push(10 as Foo);
| ^^^^^^^^^
|
help: consider using a box or reference as appropriate
--> src/main.rs:11:19
|
11 | foo_list.push(10 as Foo);
| ^^

最佳答案

Rust 让您可以引用一个临时对象:

foo_list.push(&10 as &Foo);

这个确切的代码将不起作用until Rust 1.21 ,其中文字值 10 自动提升为静态值,然后对其进行引用。

在 Rust 1.21 之前,临时变量在语句的末尾不再存在,所以你最终会在向量中得到一个悬空引用。因此,您必须使用变量来延长值的生命周期。

关于rust - 如何将文字值转换为特征对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38294911/

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