summaryrefslogtreecommitdiff
path: root/src/lab3.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/lab3.rs')
-rw-r--r--src/lab3.rs17
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("В числе имеются недопустимые символы");
+ }
}
}