< 返回版块

github.com/shanliu/lsys 发表于 2023-03-27 10:52

比如 我定义

struct a{a:i32,b:i64}
struct b{a:i32,b:i64,c:i64}

有没办法实现类似

 b{...a,c:i64}

直接复用a字段方法

评论区

写评论
作者 github.com/shanliu/lsys 2023-03-31 10:52

我想问的是有没类似的宏. 我知道RUST语法上做不了

--
👇
hax10: Rust不支持类似于Golang的结构体嵌套这种操作,但是你能把同类的字段复制过来,比如

struct A { a: i32, b: i64, c: Option<i64> }

fn main() {
    let a = A {a: 1, b: 2, c: None };
    let b = A { c: Some(3), ..a };
}
hax10 2023-03-27 18:42

Rust不支持类似于Golang的结构体嵌套这种操作,但是你能把同类的字段复制过来,比如

struct A { a: i32, b: i64, c: Option<i64> }

fn main() {
    let a = A {a: 1, b: 2, c: None };
    let b = A { c: Some(3), ..a };
}
c5soft 2023-03-27 15:47

没有,Rust不支持类似C++/C#/Java/Javascript的类继承机制!

如果打算动态存取键/值对的话,可以考虑用HashMap。

RedPanda 2023-03-27 15:13

你说的是不是

struct A{ a:R,b:S,c:T}
struct B{ x:A,d:U}
MrZLeo 2023-03-27 13:33

你的需求是什么?如果你需要和a一样的属性,那么是不是实际上需要一个a?直接写作

struct B {
    a: A,
    xxx: xxx
}

是不是更合理?

songzhi 2023-03-27 11:02

有一个RFC是增加这种语法的,忘了叫啥了…

1 共 6 条评论, 1 页