Rust#
Resources#
Organisation#
- Cargo.lock
- Cargo.toml
- src
  - lib.rs (normal code, unit tests, and run function)
  - main.rs (calls run function)
- tests
  - integration_test.rs (for run function from lib.rs)
Python extensions#
- Make Rust modules for Python bottlenecks 
Arrays#
- Pre-allocate memory in Python before using rust calls 
Multi-threading#
- par_bridge().try_for_eachenables error from one of threads to be propagated back e.g., for columns
- par_azipis similar for arrays
Error handling#
- Pattern match range of Rust errors to Python ones, so these are returned to the Python user 
Cloud#
- Read cloud files - apache/arrow-rs ( - object_store)
- Also 
 
Format#
Lint#
Profile#
Benchmark#
Logging#
JSON#
async#
Docs#
- #![warn(missing_docs)]
- all public stuff 
- create simple examples 
- #![doc = include_str!("../README.md")]
- cargo doc --no-deps --open
- good example: bed_reader - Rust (docs.rs) 
Database#
Builder pattern for keyword arguments#
Plotting#
Concatenating strings#
    let s1 = String::from("tic");
    let s2 = String::from("tac");
    let s3 = String::from("toe");
    let s = format!("{s1}-{s2}-{s3}");
Using an Enum to Store Multiple Types#
use std::collections::HashMap;
use std::hash::Hash;
#[derive(Debug, Eq, PartialEq, Hash)]
enum Keys {
    Int(i32),
    Text(String),
}
#[derive(Debug)]
#[allow(dead_code)]
enum SpreadsheetCell {
    Int(i32),
    Float(f64),
    Text(String),
}
fn main() {
    let mut scores = HashMap::new();
    scores.insert(Keys::Text(String::from("Blue")), 10);
    scores.insert(Keys::Text(String::from("Yellow")), 50);
    scores.insert(Keys::Int(42), 30);
    println!("{:#?}", scores);
    let row = vec![
        SpreadsheetCell::Int(3),
        SpreadsheetCell::Text(String::from("blue")),
        SpreadsheetCell::Float(10.12),
    ];
    println!("{:#?}", row);
}
