1
0
mirror of https://github.com/google/comprehensive-rust.git synced 2025-06-23 09:16:44 +02:00
Files
comprehensive-rust/src/std/string.md

35 lines
1.1 KiB
Markdown
Raw Normal View History

2022-12-21 16:36:30 +01:00
# String
[`String`][1] is the standard heap-allocated growable UTF-8 string buffer:
```rust,editable
fn main() {
let mut s1 = String::new();
s1.push_str("Hello");
println!("s1: len = {}, capacity = {}", s1.len(), s1.capacity());
let mut s2 = String::with_capacity(s1.len() + 1);
s2.push_str(&s1);
s2.push('!');
println!("s2: len = {}, capacity = {}", s2.len(), s2.capacity());
2023-01-10 19:06:06 +01:00
let s3 = String::from("🇨🇭");
println!("s3: len = {}, number of chars = {}", s3.len(),
s3.chars().collect::<std::vec::Vec<_>>().len());
2022-12-21 16:36:30 +01:00
}
```
`String` implements [`Deref<Target = str>`][2], which means that you can call all
`str` methods on a `String`.
[1]: https://doc.rust-lang.org/std/string/struct.String.html
[2]: https://doc.rust-lang.org/std/string/struct.String.html#deref-methods-str
2023-01-10 19:06:06 +01:00
<details>
* `len` returns the size of the `String` in bytes, not its length in characters.
* `chars` returns an iterator over the actual characters.
* `String` implements `Deref<Target = str>` which transparently gives it access to `str`'s methods.
</details>