有时我喜欢在函数中分组相关变量,而不声明新的 struct 类型.

在C中,可以这样做,例如:

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

有没有办法在Rust 的地方做到这一点?如果不是,最接近的类似功能是什么?

推荐答案

虽然不支持anonymous个 struct ,但您可以在本地对其进行范围限定,以便几乎完全按照您在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

Rust相关问答推荐

预期 struct VecDeque Student发现 struct VecDeque Student(Student)

将此字符串转换为由空格字符分隔的空格

如何从Rust记录WASM堆内存使用情况?

Rust中的相互递归特性与默认实现

rust 蚀生命周期 行为

编译项目期间使用Cargo生成时出现rustc错误

用 rust 蚀中的future 展望 struct 的future

通过异常从同步代码中产生yield 是如何工作的?

实现 Deref 的 struct 可以返回对外部数据的引用吗?

如何在 Rust 中将函数项变成函数指针

trait 对象指针的生命周期

push 方法是否取得所有权?

如何从 x86_64 Mac 构建 M1 Mac?

以 `static` 为前缀的闭包是什么意思?我什么时候使用它?

如何将参数传递给Rust 的线程?

为什么 i32 Box 类型可以在 Rust 中向下转换?

如何展平以下嵌套的 if let 和 if 语句?

Rust,使用枚举从 HashMap 获取值

为什么 no_std crate 可以依赖于使用 std 的 crate?

使用泛型作为关联类型,没有幻像数据