log2src 0.1.0

log2src maps logs back to source code
Documentation
#[macro_use]
extern crate log;

#[derive(Debug)]
enum Animal {
    Sheep,
    Dog,
    Cow,
    Chicken,
    Goat,
    Horse,
}

impl Animal {
    fn sound(&self) -> &str {
        match *self {
            Animal::Sheep => "baa",
            Animal::Dog => "woof",
            Animal::Cow => "moo",
            Animal::Chicken => "cluck",
            Animal::Goat => "bleaah",
            Animal::Horse => "neigh",
        }
    }
}

fn main() {
    env_logger::init();
    let barn = init();
    for _ in 0..10 {
        let i = rand::random_range(0..barn.len());
        debug!("Animal is going to make a noise");
        let animal = &barn[i];
        make_noise(animal);
    }
}

fn init() -> [Animal; 6] {
    debug!("Initializing animals");
    [
        Animal::Sheep,
        Animal::Dog,
        Animal::Cow,
        Animal::Chicken,
        Animal::Goat,
        Animal::Horse,
    ]
}

fn make_noise(animal: &Animal) {
    let sound = animal.sound();
    debug!("Animal {:?} says {:?}", animal, sound);
}