2016-08-18 4 views
4

Manchmal möchte ich verwandte Variablen in einer Funktion gruppieren, ohne einen neuen Strukturtyp zu deklarieren.Ist es möglich, lokale anonyme Strukturen in Rust zu deklarieren?

In C kann dies, z.B .:

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

Gibt es eine Möglichkeit, dies in Rust zu tun getan werden? Wenn nicht, was wäre das nächste Äquivalent?

Antwort

8

Während anonym structs nicht unterstützt werden, können Sie den Gültigkeitsbereich lokal, fast genau das zu tun, wie Sie in der C-Version beschrieben haben:

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

Eine andere Option ist, ein Tupel:

fn main() { 

    let obj = (1, 0, 1); 

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

Playground link

+0

Danke für den Schnitt @Shempmaster - Ich sollte wirklich die Qualität meiner Antworten erhöhen. –

+0

Haha, diese Antwort scheint mir ziemlich genau zu sein! Nicht sicher, welche Qualität dir fehlen würde ;-) – Shepmaster

Verwandte Themen