È considerato stile negativo dichiarare più istruzioni "uso" in Rust? Sono un programmatore C++ che ha recentemente iniziato a provare Rust. Una cosa che ho notato durante la revisione del codice Rust è che in molti programmi Rust ci saranno un sacco di istruzioni use
nella parte superiore del programma. Venendo dal C++, è stato scoraggiato usare using namespace std
specialmente quando si creano i file di intestazione, ma questo non sembra essere il caso della maggior parte dei programmi Rust che ho visto. Quindi quale dei seguenti esempi banali è considerato uno stile di programmazione Rust migliore? Cambia se stai facendo un programma binario rispetto a un modulo? E perché?Rust "use" vs. C++ "utilizzando namespace"
use std::sync::Arc;
use std::sync::Mutex;
use std::thread::Thread;
use std::rand::random;
fn main() {
let mut vec: Vec<char> = (0u8..10).map(|i| i as char).collect();
let mut data = Arc::new(Mutex::new(vec));
for i in 1usize..10 {
let data = data.clone();
let thread = Thread::spawn(move || {
let mut data = match data.lock() {
Ok(guard) => guard,
Err(e) => panic!("{}, was poisoned", e)
};
data.push(random::<char>());
});
}
}
O questo ...
fn main() {
let mut vec: Vec<char> = (0u8..10).map(|i| i as char).collect();
let mut data = std::sync::Arc::new(
std::sync::Mutex::new(vec)
);
for i in 1usize..10 {
let data = data.clone();
let thread = std::thread::Thread::spawn(move || {
let mut data = match data.lock() {
Ok(guard) => guard,
Err(e) => panic!("{}, was poisoned", e)
};
data.push(std::rand::random::<char>());
});
}
}
Si noti che C++ ha anche il nome singolo 'using', ad es. 'usando std :: cout;' funziona bene in C++. Quindi no, 'using' non è una dichiarazione di importazione globale. "using namespace', d'altra parte, è, ed è abbastanza autoesplicativo nei suoi effetti. – rubenvb
Ah, mi dispiace, hai ragione. Non lavoro molto con il C++, quindi potrei sicuramente sbagliarmi. –