use std::fs::File; #[derive(Debug)] pub enum State { Start, Transient, Closed, } // no reason, just showing off impl From<&'a str> for State { fn from(s: &'a str) -> Self { match s { "start" => State::Start, "closed" => State::Transient, _ => unreachable!(), } } } fn main() { let mut f = File::open("foo.txt").unwrap(); let mut s = String::new(); f.read_to_string(&mut s); let state: State = From::from(&s[..6]); println!("{:?}", state); }