Skip to content

Instantly share code, notes, and snippets.

@marxin
Created April 28, 2026 07:29
Show Gist options
  • Select an option

  • Save marxin/1d2c6508f41730005bd375c78a47ea23 to your computer and use it in GitHub Desktop.

Select an option

Save marxin/1d2c6508f41730005bd375c78a47ea23 to your computer and use it in GitHub Desktop.
use std::{fs::File, io::Read};
use rayon::iter::{IntoParallelIterator, ParallelIterator};
fn checksum_part(part: String) -> Option<u16> {
if part.is_empty() {
return None;
} else {
return Some(part.chars().fold(0, |acc, c| acc | c as u16));
}
}
const EXPECTED_HEADER: &str = "WASMER";
fn main() {
let f = File::open(dbg!(std::env::args().next().unwrap())).expect("file path checked");
let mut data = String::new();
f.read_to_string(&mut data);
if &data[..EXPECTED_HEADER.len()] != EXPECTED_HEADER {
eprintln!("Missing header");
}
let length = data.len() / 2;
let parts = vec![data[..length].to_string(), data[length + 1..].to_string()];
let checksum_parts: Vec<_> = parts
.into_par_iter()
.map(|part| checksum_part(part).unwrap())
.collect();
let checksum = checksum_parts.iter().fold(0, |acc, x| acc + x);
println!("{checksum}");
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment