let version fail gracefully
This commit is contained in:
parent
97cf500a8a
commit
b468c680b3
21
src/game.rs
21
src/game.rs
|
@ -55,13 +55,19 @@ pub struct Version {
|
||||||
pub minor: u8,
|
pub minor: u8,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Debug)]
|
||||||
|
pub struct InvalidVersion;
|
||||||
|
|
||||||
impl Version {
|
impl Version {
|
||||||
fn from(str: &str) -> Version {
|
fn from(str: &str) -> Result<Version, InvalidVersion> {
|
||||||
let parts: Vec<&str> = str.split(".").collect();
|
let parts: Vec<&str> = str.split(".").collect();
|
||||||
assert_eq!(parts.len(), 2);
|
if parts.len() == 2 {
|
||||||
Version {
|
Ok(Version {
|
||||||
major: parts[0].parse().unwrap(),
|
major: parts[0].parse().unwrap(),
|
||||||
minor: parts[1].parse().unwrap(),
|
minor: parts[1].parse().unwrap(),
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
Err (InvalidVersion)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -142,7 +148,10 @@ impl Game {
|
||||||
for segment in segments {
|
for segment in segments {
|
||||||
if segment.starts_with("# BITSY VERSION") {
|
if segment.starts_with("# BITSY VERSION") {
|
||||||
let segment = segment.replace("# BITSY VERSION ", "");
|
let segment = segment.replace("# BITSY VERSION ", "");
|
||||||
version = Some(Version::from(&segment));
|
let segment = Version::from(&segment);
|
||||||
|
if segment.is_ok() {
|
||||||
|
version = Some(segment.unwrap());
|
||||||
|
}
|
||||||
} else if segment.starts_with("! ROOM_FORMAT") {
|
} else if segment.starts_with("! ROOM_FORMAT") {
|
||||||
let segment = segment.replace("! ROOM_FORMAT ", "");
|
let segment = segment.replace("! ROOM_FORMAT ", "");
|
||||||
room_format = Some(RoomFormat::from(&segment).unwrap());
|
room_format = Some(RoomFormat::from(&segment).unwrap());
|
||||||
|
|
Loading…
Reference in New Issue