第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

【九月打卡】第11天 Rust 切片類型

標簽:
活動

课程章节: 第3章 Rust基本数据类型 3.9 切片类型

主讲老师叶枭

课程内容:

今天学习的内容是 Rust 中的切片类型

前面学习所有权时,学习了引用类型,它的特点是不拥有值的所有权。除了引用,Rust 中的切片(slice)类型,同样不持有值的所有权。

切片类型是对一个数组、字符串的引用片段。

切片有利于安全有效地访问数据的一部分,而不需要拷贝原始数据的内容。

切片在编译的时候,它的长度是未知的,在底层实现上,一个切片保存着两个 usize 类型的成员,第一个成员指向切片的起始位置的指针,第二个成员表示切片的长度。

字符串切片

字符串切片是指向 String 对象中某个连续部分的引用。

创建一个字符串切片,使用 & 表示,在方括号中设置切片的范围区间,格式为 [starting_index..ending_index],其中 starting_index 是切片起始位置的索引值,ending_index 是切片终止位置的索引值,在切片时不包含 ending_index

let str = String::from("hello world");
// 从 str 的索引0开始,取到第5个索引,这中间的5个字节作为一个切片
let hello = &str[0..5];

// 从 str 的索引6开始,取到第11个索引,这中间的5个字节作为一个切片
let world = &str[6..11];

.. 是 Rust 的 Range 范围语法,它有一些简化的用法:

// 从索引0开始取值,可以省略掉 0:
let hello = &str[..5];

// 取值到最后一个索引,也可以省略掉。
let world = &str[6..];

// 开始索引和结束索引都省略掉,表示创建一个指向完整内容的切片
let s = &str[..];

字符串字面量就是切片

前面学习字符串的类型时,提到了 Rust 中有多种不同类型的字符串,其中最常用的就是 &str 字符串引用类型和 String 类型。

创建一个 &str 类型的字符串,就是写一个字符串字面量:

let str = "hello world";

变量 str 的类型就是 &str,字符串字面量直接存储在二进制程序中,它就是一个指向二进制程序特定位置的切片。

数组切片

对一个数组(包括固定大小数组和动态数组)

fn main() {
    let arr: [u32; 5] = [1, 2, 3, 4, 5];

    // 取数组中的前三个值
    let slice = &arr[0..3];
}

切片类型的方法

切片类型有很多内置方法,介绍两个常用的:

  • is_empty :判断切片是否有内容

  • len:获取切片内容的长度

let arr: [u32; 5] = [1, 2, 3, 4, 5];
let slice = &arr[0..3];

println!("{}", slice.is_empty()); // false
println!("{}", slice.len()); // 3

课程收获

这节课学习了 Rust 中的切片类型, 包括字符串类型的切片,数组类型的切片。通过切片类型,加深了 Rust 中内存管理上的一点认识,切片就是数据在内存中一段位置的引用。所有权,引用,切片,这几个概念,使得 Rust 的内存更为安全。
图片描述

點擊查看更多內(nèi)容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學(xué)習,寫下你的評論
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學(xué)

大額優(yōu)惠券免費領(lǐng)

立即參與 放棄機會
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號

舉報

0/150
提交
取消