【Rust】String 转换
环境
- Rust 1.56.1
- VSCode 1.60.2
概念
参考:https://doc.rust-lang.org/stable/rust-by-example/conversion/string.html
示例
转为字符串
要将任何类型转为 String 类型,只需要实现 toString
trait 就可以了。
struct Circle {
radius: i32,
}
impl ToString for Circle {
fn to_string(&self) -> String {
format!("Circle of radius {}", self.radius)
}
}
fn main() {
let circle = Circle { radius: 6 };
println!("{}", circle.to_string());
}
Display
除了可以直接实现 ToString
外,还可以实现 Display
来自动获得 ToString
,这样还可以使用 print!
直接输出。
use std::fmt;
struct Circle {
radius: i32,
}
impl fmt::Display for Circle {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "Circle of radius {}", self.radius)
}
}
fn main() {
let circle = Circle { radius: 6 };
println!("{}", circle.to_string());
println!("{}", circle);
}
从字符串转换
要从字符串转为其它类型,可以实现 FromStr
,和 From
类似。
use std::num::ParseIntError;
use std::str::FromStr;
#[derive(Debug)]
struct Circle {
radius: i32,
}
impl FromStr for Circle {
type Err = ParseIntError;
fn from_str(s: &str) -> Result<Self, Self::Err> {
Ok(Circle { radius: s.parse()? })
}
}
fn main() {
println!("{:?}", Circle::from_str("44").unwrap());
}
parse
实现了 FromStr
,就可以通过 parse
方法来直接进行转换。
use std::num::ParseIntError;
use std::str::FromStr;
#[derive(Debug)]
struct Circle {
radius: i32,
}
impl FromStr for Circle {
type Err = ParseIntError;
fn from_str(s: &str) -> Result<Self, Self::Err> {
Ok(Circle { radius: s.parse()? })
}
}
fn main() {
let num: u32 = "44".parse().unwrap();
println!("{}", num);
let num = "44.44".parse::<f64>().unwrap();
println!("{}", num);
println!("{:?}", Circle::from_str("44").unwrap());
let circle: Circle = "44".parse().unwrap();
println!("{:?}", circle);
}
总结
了解了 Rust 中的字符串的转换,实现了 ToString
,Display
,FromStr
等。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
2019-11-30 spring-boot 环境搭建(一)