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

【rust】Rust 默认引用 std::prelude

读音与词义

prelude的读音:英式/美式均为/ˈprel.juːd/(“prel-yood”)

含义:名词,意为"序曲、前奏、序幕"。在编程语言中,指自动导入的预定义模块,为代码提供开箱即用的常用功能。

详细说明

自动导入

在 Rust 2024 版本中,每个模块都会自动导入:

usestd::prelude::rust_2024::*;

这意味着你可以直接使用 prelude 中定义的类型、trait 和函数,无需显式导入。

Prelude 包含的内容

std::prelude主要包含:

常见类型:

  • String,Vec,Option,Result
  • Box,Cow,Slice

重要 trait:

类别trait
转换相关AsRef,AsMut,Into,From
标记 traitSend,Sync,Sized
内存与复制Clone,Copy,Drop
格式化与默认Default,Debug
闭包Fn,FnMut,FnOnce
迭代器Iterator,DoubleEndedIterator,ExactSizeIterator
异步 (2024 新增)Future,IntoFuture

常用宏:

  • println!,format!,vec!,assert!

示例对比

// 不需要这样写:// use std::option::Option;// use std::vec::Vec;// use std::string::String;// use std::boxed::Box;// use std::future::Future; // 2024 版本中也不需要显式导入fnmain(){// 可以直接使用,因为已经在 prelude 中letv:Vec<i32>=vec![1,2,3];lets=String::from("hello");leto:Option<i32>=Some(42);letb=Box::new(5);println!("{}",s);}

禁用 Prelude

如果需要避免自动导入(例如在no_std环境中),可以使用#![no_implicit_prelude]属性:

#![no_implicit_prelude]// 现在必须显式导入所有内容externcratestd;usestd::prelude::rust_2024::*;

各版本对应关系

Rust 版本默认导入的 prelude
Rust 2015std::prelude::v1
Rust 2018std::prelude::rust_2018
Rust 2021std::prelude::rust_2021
Rust 2024std::prelude::rust_2024

2024 版本特别说明

Rust 2024 Edition 在 prelude 中新增了FutureIntoFuture两个异步 trait,这意味着异步编程时无需显式导入这些核心 trait。

升级注意事项:由于Future被加入 prelude,如果代码中存在与poll方法同名的方法,可能会产生歧义。运行以下命令可自动修复:

cargofix--edition

注意

  • no_std环境中,只有core::prelude会被导入
  • 不同 Rust Edition 的 prelude 内容可能略有差异,2024 版本是最新标准
http://www.jsqmd.com/news/529850/

相关文章:

  • AtCoder Beginner Contest 450题解
  • 20253909 2025-2026-2 《网络攻防实践》第1周作业
  • 高性价比Vibe Coding后端配置:IDEA集成Claude Code与GLM4.6实战指南
  • Agent中的ReAct:类型、作用与避坑指南(下篇)
  • Transformer的‘记忆’短板怎么破?从Titans论文看大模型长上下文优化的三个新方向
  • 119K+英语语音资源一键获取:开源批量下载工具让发音数据库构建效率提升10倍
  • 用过才敢说 一键生成论文工具测评:2026年最新推荐与对比
  • damaihelper:消除抢票壁垒的Python自动化解决方案
  • 前端工具实现浏览器端文档转换:html-docx-js全攻略
  • 软考中级操作系统核心6分攻略:从信号量到死锁的实战解题笔记
  • 20234221 实验一《Python程序设计》实验报告
  • 3步拯救C盘:WindowsCleaner让系统重获新生
  • 什么是Self-RAG?如何让模型自主判断是否需要检索?
  • 20254113 2025-2026-2 《Python程序设计》实验1报告
  • 计算机毕业设计springboot生物样本采集系统 基于SpringBoot的生物标本信息管理平台 SpringBoot框架下的生物样本数据管理系统
  • 避开这3个坑,你的CST FSS仿真结果才准确(周期边界/背景设置/端口校准)
  • 从理论到调参:手把手教你用STSB数据集微调你自己的SBERT模型
  • 快速验证CLIP模型效果:图文匹配工具本地部署与实战演示
  • WinForm常用组件
  • 计算机毕业设计springboot蔬菜种植园管理系统 基于SpringBoot的果蔬生产基地数字化管理平台 智慧农场蔬菜种植全过程追溯系统
  • CANoe E2E校验:自定义Checksum算法在CAPL中的实现与验证
  • 用python实现一个查询当天天气的MCP服务器
  • 3大核心优势:为什么Snipe-IT能彻底改变你的IT资产管理混乱局面
  • 若依微服务框架中PDF文件上传与预览的实战配置与避坑指南
  • 【原创】ERTEC 系列 PROFINET 芯片级硬件过滤器分析
  • 数据可视化神器:Tableau在大数据分析中的应用全解
  • FireRedASR-AED-L模型开发环境配置终极指南:从Anaconda到PyCharm
  • GitHub 中文界面解决方案:让代码协作更高效
  • 深度学习中的多尺度与多粒度:别再傻傻分不清了!
  • 3DS文件传输革新:多设备无线管理的终极解决方案