gpt4 book ai didi

rust - 防止值在通用匹配中掉落

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

<分区>

当尝试创建从 match 语句中继承特征的对象时,我发现有必要为每种类型的匹配对象定义不同的外部变量。有必要在匹配之外声明变量,这样声明就不会超出范围。

不可能使用类型为 Trt 的单个外部变量,因为 Trt 未调整大小。有什么方法可以让匹配返回一个实现 Trt 的对象,而无需恢复到这种提前定义大量变量的丑陋方法?

这是问题的一个例子:

enum Enm {
X1,
X2,
X3
}

trait Trt {
fn foo(&self) -> &'static str;
}

struct A{}
impl Trt for A{
fn foo(&self) -> &'static str { "A" }
}

struct B{}
impl Trt for B{
fn foo(&self) -> &'static str { "B" }
}

struct C{}
impl Trt for C{
fn foo(&self) -> &'static str { "C" }
}

fn main() {
let x = Enm::X3;

let mut temp;
let mut temp2;
let mut temp3;
let gen = match x {
Enm::X1 => {
temp = A{};
&mut temp as &mut Trt
},
Enm::X2 => {
temp2 = B{};
&mut temp2 as &mut Trt
},
Enm::X3 => {
temp3 = C{};
&mut temp3 as &mut Trt
},
};

println!("{}", gen.foo());
}

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