dede 网站名称,织梦网站排行榜,个人网站如何做淘客网站,wordpress主题缩略图基础类型
使用 as 关键字#xff1a;用于基本数值类型之间的转换#xff0c;例如将 i32 转换为 u32。
例子#xff1a;let x: i32 10; let y: u64 x as u64;
使用标准库中的转换方法#xff1a;如 from() 和 into() 方法#xff0c;这些方法通常用于无风险的转换#…基础类型
使用 as 关键字用于基本数值类型之间的转换例如将 i32 转换为 u32。
例子let x: i32 10; let y: u64 x as u64;
使用标准库中的转换方法如 from() 和 into() 方法这些方法通常用于无风险的转换或者当转换可能失败时返回 Result 类型。
例子let x: i32 10; let y: u64 u64::from(x);如果转换是安全的
使用 try_into() 和 try_from()当转换有可能失败时例如当试图将较大的整数类型转换为较小的整数类型时这些方法会返回一个 Result 类型允许错误处理。
例子let x: i32 10; let y: u8 x.try_into().unwrap();
布尔类型转换
布尔类型不能直接转换为数值类型也不能从数值类型直接转换。
如果需要基于布尔值生成数值可以使用条件表达式let num if bool_val { 1 } else { 0 };
字符与数值类型转换
字符类型 (char) 与整数类型之间的转换也需要显式操作。
例子将 char 转换为其对应的 Unicode 编码一个整数let num a as u32;
从整数转换到 char 时需要保证整数是一个有效的 Unicode 码点let ch std::char::from_u32(97).unwrap();
元组和数组
元组和数组的转换通常涉及到元素的解构或重新组合而不是类型转换。
例如从元组转换到不同类型的元组或提取元组中的值let tup (1, 2.0, a); let (x, y, z) tup;其他类型转字符串
1.使用 to_string() 方法 这是转换任何实现了 Display trait 的类型到字符串的最简单和最直接的方法。i32 和 f64 都实现了 Display trait所以可以直接使用 to_string() 方法。
let num_i32 32;
let num_f64 10.5;let str_from_i32 num_i32.to_string();
let str_from_f64 num_f64.to_string();println!(i32 to String: {}, str_from_i32); // 输出i32 to String: 32
println!(f64 to String: {}, str_from_f64); // 输出f64 to String: 10.5
2.使用 format! 宏
let num_i32 32;
let num_f64 10.5;// 使用 format! 宏进行基本转换
let str_from_i32 format!({}, num_i32);
let str_from_f64 format!({}, num_f64);// 使用 format! 宏指定浮点数的精度
let formatted_f64 format!({:.2}, num_f64);println!(i32 to String: {}, str_from_i32); // 输出i32 to String: 32
println!(f64 to String: {}, str_from_f64); // 输出f64 to String: 10.5
println!(Formatted f64: {}, formatted_f64); // 输出Formatted f64: 10.50
字符串转整形或者浮点型
let s 42.to_string();
let result: Resulti32, _ s.parse();
match result {Ok(num) println!(Converted string to i32: {}, num),Err(e) println!(Failed to convert string to i32: {}, e),
}let s 3.14.to_string();
let result: Resultf64, _ s.parse();
match result {Ok(num) println!(Converted string to f64: {}, num),Err(e) println!(Failed to convert string to f64: {}, e),
}
Result 和 Option 核心枚举类型常用的方法
Option
OptionT
OptionT 类型用于可能存在或可能不存在的值。它有两个变体Some(T) 表示有一个值和 None 表示没有值。常用方法unwrap()提取 Some 的值或在 None 时引发 panic。
let some_option Some(Hello);
println!({}, some_option.unwrap()); // 输出 Hellounwrap_or()提取 Some 的值或在 None 时返回一个默认值。
let none_option: Optionstr None;
println!({}, none_option.unwrap_or(Default)); // 输出 Defaultmap()如果是 Some(T)应用一个函数到内部值并返回一个新的 Option。
let num_option Some(5);
let squared num_option.map(|x| x * x);
println!({:?}, squared); // 输出 Some(25)and_then()如果是 Some(T)则应用一个返回 OptionU 的函数否则返回 None
let some_string Some(5);
let parsed some_string.and_then(|s| s.parse::i32().ok());
println!({:?}, parsed); // 输出 Some(5)Result
unwrap()提取 Ok 的值或在 Err 时引发 panic。
let ok_result: Resulti32, str Ok(10);
println!({}, ok_result.unwrap()); // 输出 10unwrap_or()提取 Ok 的值或在 Err 时返回一个默认值。
let err_result: Resulti32, str Err(error);
println!({}, err_result.unwrap_or(0)); // 输出 0map()如果是 Ok(T)应用一个函数到内部值并返回一个新的 Result。
let ok_result Ok(2);
let doubled ok_result.map(|x| x * 2);
println!({:?}, doubled); // 输出 Ok(4)and_then()如果是 Ok(T)则应用一个返回 ResultU, E 的函数否则返回 Err(E)
let ok_result Ok(10);
let parsed ok_result.and_then(|s| s.parse::i32().map_err(|e| parse error));
println!({:?}, parsed); // 输出 Ok(10)or_else()如果是 Err(E)应用一个函数来创建一个新的 Result否则保持 Ok(T)
let err_result: Resulti32, str Err(error);
let fixed err_result.or_else(|_| Ok(0));
println!({:?}, fixed); // 输出 Ok(0)if let
let some_option Some(10);if let Some(value) some_option {println!(Got a value: {}, value);
} else {println!(Got nothing!);
}let result: Resulti32, String Ok(20);if let Ok(num) result {println!(Success with number: {}, num);
} else {println!(Failed!);
}let some_string Some(Hello, World!);if let Some(length) some_string.map(|s| s.len()) {println!(The string length is: {}, length);
} else {println!(No string!);
}let result: Resulti32, String Err(Something went wrong.to_string());if let Err(e) result {println!(Error occurred: {}, e);
}
// 也可以添加一个 else 分支处理成功情况
else {println!(Success, no errors!);
}let result: Resulti32, String Err(failed.to_string());// 使用 map_err 转换错误类型然后使用 if let 检查
if let Err(e) result.map_err(|e| format!(Error: {}, e)) {println!({}, e);
}