Rust 程序设计语言 简体中文版 1.85.0
变化的数据,要改为存储在堆 上。 堆是缺乏组织的:当向堆放入数据时,你要请求一定大小的空间。内存分配器 (memory allocator)在堆的某处找到一块足够大的空位,把它标记为已使用,并返 回一个表示该位置地址的 指针(pointer)。这个过程称作 在堆上分配内存 (allocating on the heap),有时简称为 “分配”(allocating)。(将数据推入栈中并不 被认为 slice 能解决的问题: fn first_word(s: &String) -> ? first_word 函数有一个参数 &String。因为我们不需要所有权,所以这没有问题。不过应该返 回什么呢?我们并没有一个真正获取部分字符串的办法。不过,我们可以返回单词结尾的索 引,结尾由一个空格表示。试试如示例 4-7 中的代码。 文件名:src/main.rs fn first_word(s: 是单个字节。因为我们从 .iter().enumerate() 中获取了集合元素的引用,所以模 式中使用了 &。 在 for 循环中,我们通过字节的字面值语法来寻找代表空格的字节。如果找到了一个空格,返 回它的位置。否则,使用 s.len() 返回字符串的长度。 if item == b' ' { return i; } } s0 码力 | 562 页 | 3.23 MB | 9 天前3
共 1 条
- 1