【Rust练习】28.use and pub

练习题来自:https://practice-zh.course.rs/crate-module/use-pub.html

1

使用 use 可以将两个同名类型引入到当前作用域中,但是别忘了 as 关键字.

bash 复制代码
use std::fmt::Result;
use std::io::Result;

fn main() {}

利用as可以将重名的内容取别名:

rust 复制代码
use std::fmt::Result as fmtResult;
use std::io::Result;

fn main() {}

C++遇到这种两个include重名的话需要用命名空间来处理,利用using仅导入需要的部分。

2

rust 复制代码
// 使用两种方式填空
// 不要添加新的代码行
use std::collections::__;

fn main() {
    let _c1:HashMap<&str, i32> = HashMap::new();
    let mut c2 = BTreeMap::new();
    c2.insert(1, "a");
    let _c3: HashSet<i32> = HashSet::new();
}

第一种就是将collections下所有的内容都导入进来:

rust 复制代码
use std::collections::*;

这就像C++用using namespace std一样,我读过的大部分代码书都在告诉我,应该避免这种用法。我觉得在存量的项目确实要避免,但是新的项目就应该这么用。如果你的代码和标准库里的代码冲突了,我觉得这种冲突早晚都要解决,而不是去通过不引入冲突的代码来规避。

所以第二种就是只引入用到的内容:

rust 复制代码
use std::collections::{BTreeMap, HashMap, HashSet};

哦,对了,如果你用的是VS Code的Rust Analysis,那你直接在每个红波浪线点击快速修复即可:

甚至能自动帮你把三个导入合并成一个中括号,我上次见到这么智能还是PyCharm

相关推荐
丰锋ff1 小时前
基于 Qt 的智能门禁系统(二)
开发语言·qt
fpcc1 小时前
跟我学C++中级篇——编译期的条件选择
开发语言·c++
SomeB1oody2 小时前
【RustyML入门】6.3. 并行归约
开发语言·后端·机器学习·rust·教程
Profile排查笔记2 小时前
指纹浏览器哪个好?从 Profile、代理、权限和自动化能力判断是否适合
前端·人工智能·后端·自动化
用户938515635073 小时前
用 AI 结对编程从 0 搭一个"单词后台管理系统":Next.js + Supabase + Drizzle + shadcn/ui 全记录
后端·postgresql·next.js
mqiqe3 小时前
AgentScope Java 2.0 协议集成全景解析:A2A、AG-UI、Agent Protocol 三大开放协议实战指南
java·开发语言·ui
lzhdim3 小时前
12、JavaScript常见的内存泄露问题 - JavaScript学习系列文章
开发语言·前端·javascript·学习·ecmascript
脉动数据行情3 小时前
Java 实现台股 TWSE/TPEx 行情采集(个股 + K 线)
java·开发语言·twse·tpex·台股
爱学习的小邓同学3 小时前
Golang --- (1)第一个Golang程序
开发语言·后端·golang
红尘散仙4 小时前
TypeScript WIT Guest:类型约束与 ComponentizeJS 工程化
rust·typescript·webassembly