diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/lab3.rs | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/src/lab3.rs b/src/lab3.rs index b4adbf3..7f8edf5 100644 --- a/src/lab3.rs +++ b/src/lab3.rs @@ -4,7 +4,8 @@ use rug::{Complete, Integer}; enum State { Clean, - Done + Done, + Error, } pub struct Window { @@ -36,9 +37,14 @@ impl Lab for Window { } }); if ui.button("Разложить на множители").clicked() { - let number = Integer::parse(&self.str_num).unwrap().complete(); - self.factors.append(&mut factorize(&number)); - self.state = State::Done; + self.factors.clear(); + match Integer::parse(&self.str_num) { + Ok(number) => { + self.factors.append(&mut factorize(&number.complete())); + self.state = State::Done; + }, + Err(_) => self.state = State::Error, + }; } if let State::Done = self.state { if self.factors.len() == 1 { @@ -48,6 +54,9 @@ impl Lab for Window { ui.label(format!("Множители: {:?}", self.factors)); } } + if let State::Error = self.state { + ui.label("В числе имеются недопустимые символы"); + } } } |