Rust将字符串分为两种类型
- 固定长度字符串 &str
- 可增长长度字符串 String
use std::slice;
use std::str;
let story = "Once upon a time...";
let ptr = story.as_ptr();
let len = story.len();
// story has nineteen bytes
assert_eq!(19, len);
// We can re-build a str out of ptr and len. This is all unsafe because
// we are responsible for making sure the two components are valid:
let s = unsafe {
// First, we build a &[u8]...
let slice = slice::from_raw_parts(ptr, len);
// ... and then convert that slice into a string slice
str::from_utf8(slice)
};
assert_eq!(s, Ok(story));
字符串切片&str是一种引用类型,它由指针和长度信息组成。
- 图片
&str - 胖指针
- 指针
- 长度信息
fn main(){
let str = “hello Rust”;
let ptr = str.as_ptr();
let len = str.len();
println!(“{:p}”,ptr); //0x55db...
println!(“{:p}”,len); //10
}
没有总结完整,待从新梳理;