This commit is contained in:
Mitchell Marino 2026-01-15 18:41:21 -06:00
commit 619aaa3505
4 changed files with 76 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
/target

7
Cargo.lock generated Normal file
View 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
View File

@ -0,0 +1,6 @@
[package]
name = "plaster_calc"
version = "0.1.0"
edition = "2024"
[dependencies]

62
src/main.rs Normal file
View 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
);
}