interval-timer 0.1.1

Beeping interval stuff
use rodio::{OutputStream, source::SineWave};
use rodio::Source;
use std::{env, thread, time};

fn main() {
    let args: Vec<String> = env::args().collect();
    if args.len() < 2 {
        println!("Please provide a list of integers as command-line arguments.");
        return;
    }

    let intervals: Vec<u64> = args[1..]
        .iter()
        .filter_map(|arg| arg.parse().ok())
        .collect();

    if intervals.is_empty() {
        println!("None of the provided arguments were valid integers.");
        return;
    }

    let (_stream, stream_handle) = OutputStream::try_default().unwrap();
    let mut beepcount = 0;

    loop {
        for interval in &intervals {
            thread::sleep(time::Duration::from_secs(*interval));

            // Play a 1000 Hz sine wave for 0.1 seconds
            let source = SineWave::new(1000).take_duration(time::Duration::from_millis(500)).amplify(3.0);
            stream_handle.play_raw(source.convert_samples()).unwrap();
            beepcount += 1;
            println!("beep! {}", beepcount);
        }
    }
}