2016-08-18 2 views
4

Иногда мне нравится группировать связанные переменные в функции, не объявляя новый тип структуры.Можно ли объявить локальные анонимные структуры в Rust?

В C это может быть сделано, например .:

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

Есть ли способ сделать это в Rust? Если нет, то какой будет ближайший эквивалент?

ответ

8

Хотя анонимные Структуры не поддерживаются, вы можете их охват на местном уровне, чтобы сделать почти так же, как вы описали в версии 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

+0

Спасибо за редактирование @Shepmaster - я действительно должен повысить качество своих ответов. –

+0

Ха-ха, этот ответ кажется привлекательным для меня! Не уверен, какого качества вам не хватало ;-) – Shepmaster

Смежные вопросы