面试题答案
一键面试创建和初始化字符串的常见方式
- 使用
String::from
:let s = String::from("hello");
- 使用
format!
宏:let num = 42; let s = format!("The number is: {}", num);
- 使用
to_string
方法:let s1 = "world"; let s2 = s1.to_string();
主要区别
- 性能:
String::from
在从字符串字面量创建String
时,性能较好,因为它只是简单地将字符串字面量的内容复制到新的String
对象中。format!
宏通常用于格式化字符串,当有格式化需求时很方便,但由于涉及到格式化操作,性能会比String::from
稍差。to_string
方法性能与String::from
类似,但如果原始类型没有实现ToString
trait,可能会导致编译错误。
- 可变性:
- 这三种方式创建的
String
类型字符串都是可变的,可以通过push
、push_str
等方法修改字符串内容。
- 这三种方式创建的
- 内存管理:
String::from
和to_string
直接从已有字符串或实现了ToString
trait 的类型创建新的String
,新的String
对象拥有自己独立的堆内存。format!
宏创建字符串时,会根据格式化的内容动态分配堆内存,可能会涉及多次内存分配,尤其在格式化复杂内容时。