2023-11-19 22:02:22 +03:00
|
|
|
# String.
|
|
|
|
|
|
|
|
# Types.
|
|
|
|
|
|
|
|
## String (owned).
|
|
|
|
|
|
|
|
Those are familiar strings.
|
|
|
|
|
|
|
|
```rust
|
|
|
|
let text: String = String::from("Text!");
|
|
|
|
let text: String = "Text!".to_string();
|
|
|
|
```
|
|
|
|
|
|
|
|
## &str (slice).
|
|
|
|
|
|
|
|
Those are slices.
|
|
|
|
|
|
|
|
```rust
|
|
|
|
let text: &str = "Text!";
|
|
|
|
|
|
|
|
let text: String = "Text!".to_string();
|
|
|
|
let ref: &str = &text;
|
|
|
|
```
|
|
|
|
|
|
|
|
# Operations.
|
|
|
|
|
|
|
|
## Append.
|
|
|
|
|
|
|
|
```rust
|
|
|
|
let mut s = String::from("foo");
|
|
|
|
s.push_str("bar");
|
|
|
|
```
|
|
|
|
|
|
|
|
## Format.
|
|
|
|
|
|
|
|
```rust
|
|
|
|
let s1 = String::from("tic");
|
|
|
|
let s2 = String::from("tac");
|
|
|
|
let s3 = String::from("toe");
|
|
|
|
|
|
|
|
let s = format!("{s1}-{s2}-{s3}");
|
|
|
|
```
|
|
|
|
|
|
|
|
## Trim.
|
|
|
|
|
|
|
|
```rust
|
|
|
|
fn trim_me(input: &str) -> String {
|
|
|
|
input.trim().to_string()
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
|
|
|
## Replace.
|
|
|
|
|
|
|
|
```rust
|
|
|
|
fn replace_me(input: &str) -> String {
|
|
|
|
input.replace("cars", "balloons").to_string()
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
|
|
|
## Slice.
|
|
|
|
|
|
|
|
```rust
|
|
|
|
let s = String::from("Здравствуйте");
|
|
|
|
let s = &s[0..4]; // Content is "Зд" - first 4 bytes (2 bytes per letter).
|
|
|
|
```
|
|
|
|
|
|
|
|
## Iterate.
|
|
|
|
|
|
|
|
```rust
|
|
|
|
// Iterate over UTF character vector.
|
|
|
|
for c in "Зд".chars() {}
|
|
|
|
|
|
|
|
// Iterate over UTF bytes.
|
|
|
|
for c in "Зд".bytes() {}
|
|
|
|
|
|
|
|
// To iterate over UTF letters you need to use an external crate.
|
|
|
|
```
|
2023-11-20 21:28:15 +03:00
|
|
|
|
|
|
|
## Uppercase / Lowercase.
|
|
|
|
|
|
|
|
```rust
|
|
|
|
let s = String::from("Hi there!");
|
|
|
|
let uppercase = s.to_uppercase();
|
|
|
|
let lowercase = s.to_lowercase();
|
|
|
|
```
|