struct - 是否可以在 Rust 中声明本地匿名结构?

标签 struct rust

有时我喜欢在函数中对相关变量进行分组,而不声明新的结构类型。

在 C 中这可以完成,例如:

void my_function() {    
    struct {
        int x, y;
        size_t size;
    } foo = {1, 1, 0};
    // ....
}

有没有办法在 Rust 中做到这一点?如果不是,最接近的等价物是什么?

最佳答案

虽然不支持匿名结构,但您可以在本地限定它们的范围,几乎完全按照您在 C 版本中描述的那样进行:

fn main() {

    struct Example<'a> {
        name: &'a str
    };

    let obj = Example { name: "Simon" };
    let obj2 = Example { name: "ideasman42" };

    println!("{}", obj.name); // Simon
    println!("{}", obj2.name); // ideasman42
}

Playground link

另一种选择是元组:

fn main() {

    let obj = (1, 0, 1);

    println!("{}", obj.0);
    println!("{}", obj.1);
    println!("{}", obj.2);
}

Playground link

关于struct - 是否可以在 Rust 中声明本地匿名结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39008880/

相关文章:

rust - 如何在 Fedora 26 上卸载 Rust?

multithreading - 如果没有数据等待,从 mpsc::channel 获取数据而不锁定

ios - 在 swift 中使用 stringInterpolationSegment 字符串初始值设定项

C++更改结构在一个 vector 内的值,在一个结构内,在另一个 vector 内

rust - 取消引用 *mut T 转换为 *mut ManuallyDrop<T> 是未定义的行为吗?

rust - 我应该如何处理 NEAR 协议(protocol)中的智能合约结构变更?

rust - 如何获取 Arc<[T]> 的子切片

c - 返回未初始化的结构位置

c - 如何用零初始化结构的数组字段

C++ 神秘结构赋值与 int 截断