推荐use
声明的推荐位置在哪里?在本书,常见问题解答,邮件列表或在线论坛中,我无法找到任何决定性的答案。我正在Rust开始一个新项目,我更愿意立刻采取正确的方法。
建议采用以下两种方法之一吗?它只适用于#34;别名"什么东西或它做得更多,比如如果之前没有使用过模块那么初始化它?
use std::io;
use std::io::Write;
fn some_func() -> () {
[...] // We assume we need std::io here
}
fn some_other_func() -> () {
[...] // We assume we need std::io and std::io::Write here
}
OR
fn some_func() -> () {
use std::io;
[...] // We assume we need std::io here
}
fn some_other_func() -> () {
use std::io;
use std::io::Write;
[...] // We assume we need std::io and std::io::Write here
}
答案 0 :(得分:5)
TL; DR:像几乎所有其他软件一样,这取决于你在做什么。我观察到的(并且更喜欢自己)的常见风格是将它们放在文件的顶部,并根据需要将它们移动到更窄的范围。
通常,我建议首先在use
和extern crate
语句之后直接放置mod
语句,用空行分隔:
extern crate foo;
extern crate bar;
mod interesting;
use std::collections::HashMap;
use foo::Foo;
use bar::{Quux, moo};
use interesting::something;
// structs, functions, etc.
我的默认基于以下事实 - 大多数情况下 - 导入用于多个顶级项目。因此,仅导入一次是有意义的。
有时会imported traits have conflicting methods,在这种情况下,我会将导入范围限定在需要的位置。在某些情况下,我会严重处理单个枚举,并希望对其进行全局导入以避免重新声明枚举的名称:
fn foo(e: MyEnum) {
use MyEnum::*;
match e {
One => 1,
Two => 2,
}
}
在某些情况下,冲突的use
语句表明您在单个文件中尝试过多,并且应将其拆分为单独的文件,然后use
语句不再含糊不清。