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

wordpress亲子模板下载网站设计网站优化公司

wordpress亲子模板下载,网站设计网站优化公司,六安网站制作哪里有,长春网站建设优化排名文章目录 一、错误处理之#xff1a;Result、Option以及panic!宏1.Result2.Option3.panic! 二、错误处理之#xff1a;unwrap()与?1.unwrap()2.#xff1f;运算符 三、自定义一个Error类型参考 一、错误处理之#xff1a;Result、Option以及panic!宏 Rust中的错误可以分为… 文章目录 一、错误处理之Result、Option以及panic!宏1.Result2.Option3.panic! 二、错误处理之unwrap()与?1.unwrap()2.运算符 三、自定义一个Error类型参考 一、错误处理之Result、Option以及panic!宏 Rust中的错误可以分为两种 Recoverable error有返回类型 1返回Result类型 2返回Option类型 Unrecoverable type没有返回类型直接崩溃 panicmacro将终止当前线程 1.Result Result是一个枚举类型有两个变体0k和Err。它通常用于表示函数的执行结果其中ok表示成功的结果Err表示出现了错误 pub enum ResultTE{Ok(T)Err (E), }2.Option ·Option也是一个枚举类型有两个变体Some和None。它通常用于表示一个可能为空的值。 pub enum OptionT{ None, Some (T), }3.panic! 当程序遇到无法继续执行的错误时可以使用panic宏来引发恐慌。恐慌会导致程序立即终止并显示一条错误消息。 Example fn divide(a: i32, b: i32) - Resultf64, String {if b 0 {return Err(String::from(cannot be zero));}let a a as f64;let b b as f64;Ok(a / b) }fn find_element(array: [i32], target: i32) - Optionusize {for (index, element) in array.iter().enumerate() {if (*element) target {return Some(index);}}None }fn main() {// 处理result结果只能使用matchmatch divide(1, 2) {Ok(number) println!({}, number),Err(err) println!({}, err),}match divide(1, 0) {Ok(number) println!({}, number),Err(err) println!({}, err),}// optionlet arr [1, 2, 3, 4, 5];match find_element(arr, 4) {Some(index) println!(found in {}, index),None println!(None),}match find_element(arr, 7) {Some(index) println!(found in {}, index),None println!(None),}// paniclet vec vec![1, 2, 3, 4, 5];vec[43]; //数组越界 } 编译及运行  cargo runFinished dev profile [unoptimized debuginfo] target(s) in 0.00sRunning target/debug/ch17_error 0.5 cannot be zero found in 3 None thread main panicked at src/main.rs:43:8: index out of bounds: the len is 5 but the index is 43 note: run with RUST_BACKTRACE1 environment variable to display a backtrace ~/installer/rust/project/ch17_error master x101  RUST_BACKTRACE1 cargo runFinished dev profile [unoptimized debuginfo] target(s) in 0.00sRunning target/debug/ch17_error 0.5 cannot be zero found in 3 None thread main panicked at src/main.rs:43:8: index out of bounds: the len is 5 but the index is 43 stack backtrace:0: rust_begin_unwindat /rustc/1e4f10ba6476e48a42a79b9f846a2d9366525b9e/library/std/src/panicking.rs:665:51: core::panicking::panic_fmtat /rustc/1e4f10ba6476e48a42a79b9f846a2d9366525b9e/library/core/src/panicking.rs:75:142: core::panicking::panic_bounds_checkat /rustc/1e4f10ba6476e48a42a79b9f846a2d9366525b9e/library/core/src/panicking.rs:285:53: usize as core::slice::index::SliceIndex[T]::indexat /home/wangji/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/slice/index.rs:304:104: core::slice::index::impl core::ops::index::IndexI for [T]::indexat /home/wangji/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/slice/index.rs:16:95: alloc::vec::VecT,A as core::ops::index::IndexI::indexat /home/wangji/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/vec/mod.rs:3344:96: ch17_error::mainat ./src/main.rs:43:87: core::ops::function::FnOnce::call_onceat /home/wangji/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ops/function.rs:250:5 note: Some details are omitted, run with RUST_BACKTRACEfull for a verbose backtrace.二、错误处理之unwrap()与’?’ 1.unwrap() 注意该方法并不安全 unwrap是 Result 和 Option 类型提供的方法之一。它是一个简便的方法用于获取 Ok 或 Some 的值如果是 Err 或 None 则会引发 panic 2.运算符 用于简化 Result 或 Option 类型的错误传播。它只能用于返回 Result 或Option 的函数中并且在函数内部可以像使用unwrap一样访问 Ok 或 Some的值但是如果是 Err 或 None 则会提前返回。 Example use std::num::ParseIntError;fn find_first_even(numbers: Veci32) - Optioni32 {let first_even numbers.iter().find(|num| num % 2 0)?;print!(Option);Some(*first_even) }// 传递错误 fn parse_numbers(input: str) - Resulti32, ParseIntError {let val input.parse::i32()?;Ok(val) }fn main() - Result(), Boxdyn std::error::Error {// Resulti32, strlet result_ok: Resulti32, str Ok(32);let value result_ok.unwrap();println!({}, value);// Resulti32, str 直接panic// let result_ok: Resulti32, str Err(ff);// let value result_ok.unwrap();// println!({}, value);// 使用?let result_ok: Resulti32, str Ok(100);let value result_ok?;println!({}, value);// 找到第一个偶数let numbers vec![1, 3, 5];match find_first_even(numbers) {Some(_) println!(first even 1),None println!(no such number),}match parse_numbers(d) {Ok(i) println!(parsed {}, i),Err(err) println!(failed to parse: {}, err),}Ok(()) } 编译及运行  cargo runCompiling ch18_question_unwrap v0.1.0 (/home/wangji/installer/rust/project/ch18_question_unwrap)Finished dev profile [unoptimized debuginfo] target(s) in 0.23sRunning target/debug/ch18_question_unwrap 32 100 no such number failed to parse: invalid digit found in string三、自定义一个Error类型 1.定义错误类型结构体创建一个结构体来表示你的错误类型通常包含一些字段来描述错误的详细信息。 2.实现 std::fmt::Display trait实现这个 trait以定义如何展示错误信息。这是为了使错误能够以人类可读的方式打印出来。 3.实现 std::error::Error trait实现这个 trait以满足Rust的错误处理机制的要求。 #[derive(Debug)] struct MyError {detail: String, }impl std::fmt::Display for MyError {fn fmt(self, f: mut std::fmt::Formatter_) - std::fmt::Result {write!(f, Custom Error: {}, self.detail)} }impl std::error::Error for MyError {fn description(self) - str {self.detail}// String String自动转 str 字符串字面量 }fn func() - Result(), MyError {Err(MyError {detail: CustomError.to_owned(),})// Ok(()) }// 等价于fn main()-Result(), MyError // 所有实现std::error::Error 的东西都可以使用Boxdyn std::error::Error进行返回 fn main() - Result(), Boxdyn std::error::Error {match func() {Ok(_) println!(func ok),Err(err) println!(Error: {}, err),}func()?;println!(oo); //以前前面?的原因且返回的是Err这里则不会输出Ok(()) } 编译及运行  cargo runFinished dev profile [unoptimized debuginfo] target(s) in 0.05sRunning target/debug/ch19_custom_err Error: Custom Error: CustomError Error: MyError { detail: CustomError }参考 2024 Rust现代实用教程
http://www.hkea.cn/news/14447303/

相关文章:

  • 企业网站设计推广方案网站建设价格在哪济南兴田德润优惠吗
  • 冠县网站建设gxsh做网站淘宝条形码
  • 买域名做网站跳转我的世界做皮肤壁纸网站
  • 南宁 网站建设 制作扬州网站seo
  • 无需下载的网站乡镇医院网站建设
  • 网站建设流程收费游戏网
  • 北京网站制作设计公司排名一站式做网站设计
  • 网站域名怎么查询wordpress 产品属性tag
  • 免费送网站广州网站建设排名
  • 上海市中学生典型事例网站安阳企业网站优化外包
  • 免费ppt模板下载熊猫办公营销网站的专业性诊断评价和优化
  • 网站建设宝安可以做婚礼鲜花布置的网站
  • 南昌网站建设有限公司福州建站免费模板
  • 江西网站设计服务采购网站大全
  • 博爱网站建设图片版本wordpress
  • 泰安网站建设总结东莞网站建设功能
  • 曲靖网站建设公司python语言基础
  • 购买了网站如何使用吗成品视频直播软件推荐哪个好一点ios
  • 网站没备案可以上线吗在线制作表情包生成器软件
  • 外贸发货做网站怎么写市场监督管理局待遇如何
  • 网站地图在哪里展现上海网站建设价
  • 网站需求清单termux wordpress
  • 网站开发英语wordpress 在线留言
  • 广饶网站制作珠海市建设工程交易中心网
  • 公司的网站难不难做高端饰品品牌有哪些
  • 广告页面模板网站江宁网站建设案例
  • 怎么给自己的网站做域名东莞市企慕网络科技有限公司
  • 丽水品牌网站建设商标设计图案
  • ip地址信息备案管理系统优化网站规模
  • 杭州百度推广开户网站主题及样式优化