rust : wip.

This commit is contained in:
Dmitry Voronin 2023-11-20 21:05:25 +03:00
parent 2aa8e03572
commit 3cd93671e2
2 changed files with 97 additions and 0 deletions

29
dev/lang/rust/hashmap.md Normal file
View file

@ -0,0 +1,29 @@
# Hashmap.
# Create / Use.
```rust
use std::collections::HashMap;
// Create.
let mut scores = HashMap::new();
// Insert.
scores.insert(String::from("Blue"), 10);
scores.insert(String::from("Yellow"), 50);
// Get.
let team_name = String::from("Blue");
let score = scores.get(&team_name).copied().unwrap_or(0); // .get() returns Option<&i32> hence the .copied().
// Iterate.
for (key, value) in &scores {
println!("{key}: {value}");
}
// Update.
scores.insert(String::from("Blue"), 20); // Overwrite.
scores.entry(String::from("Blue")).or_insert(20); // Only if not exists.
let count = scores.entry(String::from("Blue")).or_insert(0);
*count += 1; // Add, substract etc.
```

View file

@ -0,0 +1,68 @@
# Module (access control).
# Create module.
## Separate file.
`src/garden.rs`
## Separate dir.
`src/garden/mod.rs`
## Inline / Access control.
Everything is private by default. Use keyword `pub` to make something public.
```rust
mod sausage_factory {
fn get_secret_sauce() -> String {
String::from("Ginger")
}
pub fn make_sausage() {
get_secret_sauce();
println!("sausage!");
}
}
fn main() {
sausage_factory::make_sausage();
}
```
# Access module.
Use `use` and `as` keywords.
```rust
use std::io;
use std::io as IO;
use std::io::{self, Write};
use std::collections::*;
```
```rust
mod delicious_snacks {
pub use self::fruits::PEAR as fruit;
pub use self::veggies::CUCUMBER as veggie;
mod fruits {
pub const PEAR: &'static str = "Pear";
pub const APPLE: &'static str = "Apple";
}
mod veggies {
pub const CUCUMBER: &'static str = "Cucumber";
pub const CARROT: &'static str = "Carrot";
}
}
fn main() {
println!(
"favorite snacks: {} and {}",
delicious_snacks::fruit,
delicious_snacks::veggie
);
}
```