gpt4 book ai didi

rust - 将 `use` 声明放入 Rust 的推荐位置在哪里?

转载 作者:行者123 更新时间:2023-11-29 07:48:21 27 4
gpt4 key购买 nike

use 声明的推荐位置在哪里?我无法在书中、常见问题解答、邮件列表或在线论坛中找到任何决定性的答案。我正在用 Rust 开始一个新项目,我希望立即获得正确的方法。

是否推荐以下两种方法之一?它只是用于“别名”的东西还是它做更多的事情,比如初始化一个以前没有使用过的模块?

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
}

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
}

最佳答案

TL;DR:与几乎所有其他软件一样,这取决于您在做什么。我观察到的(我自己更喜欢)的常见风格是将它们放在文件的顶部,并且只根据需要将它们移动到更窄的范围。


通常,我建议首先将 use 语句直接放在任何 extern cratemod 语句之后,用空行分隔:

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 语句就没有了不再暧昧。

关于rust - 将 `use` 声明放入 Rust 的推荐位置在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45618552/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com