init
This commit is contained in:
commit
619aaa3505
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
/target
|
||||
7
Cargo.lock
generated
Normal file
7
Cargo.lock
generated
Normal file
@ -0,0 +1,7 @@
|
||||
# This file is automatically @generated by Cargo.
|
||||
# It is not intended for manual editing.
|
||||
version = 4
|
||||
|
||||
[[package]]
|
||||
name = "plaster_calc"
|
||||
version = "0.1.0"
|
||||
6
Cargo.toml
Normal file
6
Cargo.toml
Normal file
@ -0,0 +1,6 @@
|
||||
[package]
|
||||
name = "plaster_calc"
|
||||
version = "0.1.0"
|
||||
edition = "2024"
|
||||
|
||||
[dependencies]
|
||||
62
src/main.rs
Normal file
62
src/main.rs
Normal file
@ -0,0 +1,62 @@
|
||||
use std::env;
|
||||
use std::process;
|
||||
|
||||
const GRAMS_PER_OUNCE: f64 = 28.349523125;
|
||||
|
||||
fn main() {
|
||||
let args: Vec<String> = env::args().collect();
|
||||
|
||||
if args.len() != 2 {
|
||||
eprintln!("Usage: {} <part_volume_cm3>", args[0]);
|
||||
process::exit(1);
|
||||
}
|
||||
|
||||
let part_volume_cm3: f64 = match args[1].parse() {
|
||||
Ok(v) => v,
|
||||
Err(_) => {
|
||||
eprintln!("Error: volume must be a number");
|
||||
process::exit(1);
|
||||
}
|
||||
};
|
||||
|
||||
println!("\n=== Full scale ({:.2}cm^3) ===", part_volume_cm3);
|
||||
print_volume_stats(part_volume_cm3);
|
||||
|
||||
let scaled_volume = part_volume_cm3 / 8.0;
|
||||
println!("\n=== 1/8 scale ({:.2}cm^3) ===", scaled_volume);
|
||||
print_volume_stats(scaled_volume);
|
||||
}
|
||||
|
||||
fn print_volume_stats(part_volume_cm3: f64) {
|
||||
// about 1.5 parts water produces 2 parts mix
|
||||
let water_volume = part_volume_cm3 * (1.5 / 2.0);
|
||||
|
||||
// density of water ≈ 1 g/cm^3
|
||||
let water_mass_g = water_volume;
|
||||
|
||||
// 16 parts plaster : 10 parts water (by weight)
|
||||
let plaster_mass_g = water_mass_g * (16.0 / 10.0);
|
||||
|
||||
let water_mass_oz = water_mass_g / GRAMS_PER_OUNCE;
|
||||
let plaster_mass_oz = plaster_mass_g / GRAMS_PER_OUNCE;
|
||||
|
||||
println!("Water: {:.2} g ({:.2} oz)", water_mass_g, water_mass_oz);
|
||||
println!(
|
||||
"Plaster: {:.2} g ({:.2} oz)",
|
||||
plaster_mass_g, plaster_mass_oz
|
||||
);
|
||||
|
||||
// add 10% slack
|
||||
let water_slack_g = water_mass_g * 1.10;
|
||||
let plaster_slack_g = plaster_mass_g * 1.10;
|
||||
|
||||
let water_slack_oz = water_slack_g / GRAMS_PER_OUNCE;
|
||||
let plaster_slack_oz = plaster_slack_g / GRAMS_PER_OUNCE;
|
||||
|
||||
println!("With 10% slack:");
|
||||
println!("Water: {:.2} g ({:.2} oz)", water_slack_g, water_slack_oz);
|
||||
println!(
|
||||
"Plaster: {:.2} g ({:.2} oz)",
|
||||
plaster_slack_g, plaster_slack_oz
|
||||
);
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user