当前位置: 首页 > article >正文

【Rust练习】28.use and pub

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

1

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

use std::fmt::Result;
use std::io::Result;

fn main() {}

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

use std::fmt::Result as fmtResult;
use std::io::Result;

fn main() {}

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

2


// 使用两种方式填空
// 不要添加新的代码行
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下所有的内容都导入进来:

use std::collections::*;

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

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

use std::collections::{BTreeMap, HashMap, HashSet};

哦,对了,如果你用的是VS Code的Rust Analysis,那你直接在每个红波浪线点击快速修复即可:
自动导入
甚至能自动帮你把三个导入合并成一个中括号,我上次见到这么智能还是PyCharm


http://www.kler.cn/a/505150.html

相关文章:

  • 《数据思维》之数据可视化_读书笔记
  • java集合面试题
  • Boost Asio TCP异步服务端和客户端
  • linux mysql 备份
  • 【数字化】华为-用变革的方法确保规划落地
  • LSA更新、撤销
  • 【Qt】02-信号与槽函数
  • 全域数据资产管理平台 | SimbaFabric
  • git merge 压缩提交
  • 大模型微调|使用LoRA微调Qwen2.5-7B-Instruct完成文本分类任务
  • Unity|Tetris|俄罗斯方块复刻1(C#)
  • RK3588-NPU pytorch-image-models 模型编译测试
  • cursor重构谷粒商城01——为何要重构谷粒商城
  • 2025开年解读:AI面试 VS 传统面试本质上区别有哪些?
  • Linux网络知识——网络命名空间虚拟网卡
  • 数据结构知识点
  • Java 面试题 - ArrayList 和 LinkedList 的区别,哪个集合是线程安全的?
  • 接口自动化测试难点—数据库验证解决方案
  • HTTP 头部字段的作用
  • HarmonyOS 鸿蒙 ArkTs(5.0.1 13)实现Scroll下拉到顶刷新/上拉触底加载,Scroll滚动到顶部
  • Object类和hashcode方法
  • 链接加载与ATT汇编
  • 【DevOps】Pipeline功能语法
  • 从0到1搭建推荐系统 -- 数据驱动的算法与架构设计(带数据集)
  • 脚本练习3
  • 统计学习算法——逻辑斯谛回归