You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rust的slice是否携带额外动态数据?如字符串长度或末尾零标记

Rust字符串切片存储逻辑答疑

核心问题解答

  • Rust中的切片(包括字符串切片&str)是胖指针结构,本身固定携带两个字段:
    • 指向底层字符串数据起始位置的指针
    • 类型为usize的切片长度值
  • 切片不会依赖末尾的零值判断长度,Rust原生字符串也没有末尾补零的设计约定,长度信息直接存储在切片结构体本身,不会存到底层字符串数据的开头或者末尾位置。

对应代码疑问说明

你定义的HashMap<&'static str, &'static str>,key和value的类型都是字符串切片,确实可以指向任意长度的静态字符串:

  • 无论指向的字符串内容有多长,&'static str本身的大小是固定的(64位系统下为16字节,对应1个指针加1个usize长度),HashMap可以正常存储该类型。
  • 当你插入值"US Dollar"时,对应的&'static str切片的长度字段已经被赋值为9,程序需要读取长度时直接读取切片的长度字段即可,不需要额外遍历内容或者查找终止标记。

补充说明:你给出的代码示例中调用hashmap.get("EUR")实际得到的是值"Euro",注释标注的输出usd : US Dollar是笔误,调用hashmap.get("USD")才会得到该输出。

内容的提问来源于stack exchange,提问作者Kos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 13:24:04