You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: wave-deinter.rs
    path of file: ./repos/bwavfile/examples
    
    the code of the file until where you have to start completion: //! wave-deinter.rs
//! (c) 2021 Jamie Hardt. All rights reserved.
//!
//! This program demonstrates splitting a multichannel file into separate monophonic files for each
//! individual channel.

use std::io::{Read, Seek};
use std::path::Path;

extern crate bwavfile;
use bwavfile::{
    ChannelDescriptor, ChannelMask, CommonFormat, Error, Sample, Wav
    
fn main() -> Result<(), Box<dyn std::error::Error>> {
    let matches = App::new("wave-deinter")
        .version(crate_version!())
        .author(crate_authors!())
        .about("Extract each channel of a polyphonic wave file as a new monoaural wave file.")
        .arg(
            Arg::with_name("numeric_names")
                .long("numeric")
                .short("n")
                .help("Use numeric channel names \"01\" \"02\" etc.")
                .takes_value(false),
        )
        .arg(
            Arg::with_name("channel_delimiter")
                .long("delim")
                .short("d")
                .help("Channel label delimiter.")
                .default_value("."),
        )
        .arg(
            Arg::with_name("INPUT")
                .help("Input wave file")
                .required(true)
                .multiple(true),
        )
        .get_matches();

    let settings = Settings {
        input_path: matches.value_of("INPUT").unwrap().into(),
        delimiter: matches.value_of("channel_delimiter").unwrap().into(),
        use_numeric_names: matches.is_present("numeric_names"),
    };

    process_file(WaveReader::open(&settings.input_path)?, settings)?;
    Ok(())
}