Rust &str 和String

2019-11-10  本文已影响0人  空乱木

Rust将字符串分为两种类型

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
}

没有总结完整,待从新梳理;

上一篇 下一篇

猜你喜欢

热点阅读