字符串 vs &str

主要观点:工程师在采用 Rust 时,常对&strString感到困惑,两者在不同情境下使用,有最优选择。
关键信息:

  • &str是引用,不拥有字符串内存,大小固定可存于栈,只能在源存活时存在,能转换为String
  • Vecslice也有类似情况。
  • 函数参数:一般接受&str更宽容,若需String可接受impl Into<String>
  • 函数返回值:两种情况返回&str,否则返回String
  • 结构体字段:嵌入&str需与&str来源相关,可提高效率。
    重要细节:
  • StringDeref<Target = str>实现,可转换为&str
  • Into<String>接口允许传入String&str,传入String.into()可优化。
  • 编译器在合适时会强制返回String
  • 结构体字段中需明确生命周期,SubstringMatch结构只能在&str存活时存在,避免原始字符串被修改。
阅读 10
0 条评论