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

Rust基础[part9]_返回值和错误处理、模块化

Rust基础[part9]_返回值和错误处理、模块化

返回值

Option<T>

基本使用
fn option_example() {// 创建Optionlet some_number = Some(5);let some_string = Some("a string");let absent_number: Option<i32> = None;//使用let x = plus_one(some_number);let y = plus_one(absent_number);println!("x: {:?}, y: {:?}", x, y);
}fn plus_one(x: Option<i32>) -> Option<i32> {match x {None => None,Some(i) => Some(i + 1),}
}
辅助函数
  • unwrap() : 提取option中的值,但是没有值的时候会panic
fn unwrap_example() {let some_number = Some(5);let some_string = Some("a string");let absent_number: Option<i32> = None;println!("some_number: {:?}", some_number.unwrap());println!("some_string: {:?}", some_string.unwrap());// println!("absent_number: {:?}", absent_number.unwrap());
}
  • is_some() 和is_none()
fn is_some_example() {let some_number = Some(5);let some_string = Some("a string");let absent_number: Option<i32> = None;println!("some_number: {:?}", some_number.is_some());println!("some_string: {:?}", some_string.is_some());println!("absent_number: {:?}", absent_number.is_some());
}fn is_none_example() {let some_number = Some(5);let some_string = Some("a string");let absent_number: Option<i32> = None;println!("some_number: {:?}", some_number.is_none());println!("some_string: {:?}", some_string.is_none());println!("absent_number: {:?}", absent_number.is_none());
}

错误处理

Rust中的错误主要分为两类:

  • 可恢
http://www.dtcms.com/a/306520.html

相关文章:

  • [特殊字符] 征服CPU的艺术:Rust多进程编程实战指南
  • Cortex-M处理器的优势?
  • STM32CubeIDE新建项目过程记录备忘(二)
  • FFmpeg:因码流采集与封装不同步导致录制出来的MP4文件会出现黑屏、绿屏的问题
  • Zynq SoC 中断控制系统设计与实现:基于 GPIO 的中断驱动开发
  • LocalDateTime vs Instant vs ZonedDateTime:到底该用哪个?
  • .net6的webapi项目统一封装返回值
  • 剧本杀系统 App 开发:科技赋能,重塑剧本杀游戏体验
  • 光伏气象监测系统:当阳光遇见科技
  • Javascript 基础总结
  • 做题笔记:某大讯飞真题28道
  • 浅拷贝和深拷贝
  • uni-app,uni.navigateTo
  • 【LangChain4j 详解】Java生态大语言模型框架设计哲学与架构原理
  • Node.js以及异步编程
  • vue模块化导入
  • 网络安全学习第16集(cdn知识点)
  • Android调用python库和方法的实现
  • 开源项目:排序算法的多种实现方式
  • DAY15-指针(3)
  • 解决:React Native 中常见的 状态栏遮挡内容
  • python 中 TypeError: self类型对象传入错误解决办法
  • 在职申硕,怎么选适合自己的学科专业呢?
  • 计算机网络1-3:三种交换方式
  • sed编程入门
  • Android RTMP推送|轻量级RTSP服务同屏实践:屏幕+音频+录像全链路落地方案
  • 本地 docker 部署 HAR包分析工具 harviewer
  • 2025年7月技术问答第5期
  • MySQL: with as与with RECURSIVE如何混合使用?
  • 【算法】十大排序算法超深度解析,从数学原理到汇编级优化,涵盖 15个核心维度