aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRose Hogenson <rosehogenson@posteo.net>2024-05-28 18:12:02 -0700
committerRose Hogenson <rosehogenson@posteo.net>2024-05-28 18:14:21 -0700
commit2df47cf5e375c73917ebcd6690cd16199d57af83 (patch)
tree6b5206f512e7b0a5ce7ee8d4c3b76a51919e7a32
parent8c0ddfb990057c5ae8d6d15ab0e0ec3f83b07ee4 (diff)
downloadqc-2df47cf5e375c73917ebcd6690cd16199d57af83.tar.zst
Use num crate.
-rw-r--r--Cargo.lock48
-rw-r--r--Cargo.toml3
-rw-r--r--src/eval.rs (renamed from src/num.rs)6
-rw-r--r--src/main.rs2
-rw-r--r--src/parser.rs18
5 files changed, 59 insertions, 18 deletions
diff --git a/Cargo.lock b/Cargo.lock
index 187dd2c..714d97c 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -469,6 +469,20 @@ dependencies = [
]
[[package]]
+name = "num"
+version = "0.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23"
+dependencies = [
+ "num-bigint",
+ "num-complex",
+ "num-integer",
+ "num-iter",
+ "num-rational",
+ "num-traits",
+]
+
+[[package]]
name = "num-bigint"
version = "0.4.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -479,6 +493,15 @@ dependencies = [
]
[[package]]
+name = "num-complex"
+version = "0.4.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495"
+dependencies = [
+ "num-traits",
+]
+
+[[package]]
name = "num-integer"
version = "0.1.46"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -488,6 +511,28 @@ dependencies = [
]
[[package]]
+name = "num-iter"
+version = "0.1.45"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf"
+dependencies = [
+ "autocfg",
+ "num-integer",
+ "num-traits",
+]
+
+[[package]]
+name = "num-rational"
+version = "0.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824"
+dependencies = [
+ "num-bigint",
+ "num-integer",
+ "num-traits",
+]
+
+[[package]]
name = "num-traits"
version = "0.2.19"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -569,8 +614,7 @@ dependencies = [
"async-channel",
"gdk4",
"gtk4",
- "num-bigint",
- "num-traits",
+ "num",
]
[[package]]
diff --git a/Cargo.toml b/Cargo.toml
index 094829c..67a9acb 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -9,5 +9,4 @@ edition = "2021"
async-channel = "2.3.1"
gdk4 = "0.8.2"
gtk4 = "0.8.2"
-num-bigint = "0.4.5"
-num-traits = "0.2.19"
+num = "0.4.3"
diff --git a/src/num.rs b/src/eval.rs
index 10dfea2..d3b5ddc 100644
--- a/src/num.rs
+++ b/src/eval.rs
@@ -1,7 +1,5 @@
-use num_bigint::BigInt;
-use num_traits::cast::ToPrimitive;
-use num_traits::pow::Pow;
-use num_traits::{FromPrimitive, Signed};
+use num::pow::Pow;
+use num::{BigInt, FromPrimitive, Signed, ToPrimitive};
use std::fmt::{Display, Formatter};
pub enum Num {
diff --git a/src/main.rs b/src/main.rs
index e505ee6..08c1ded 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -1,5 +1,5 @@
+mod eval;
mod lexer;
-mod num;
mod parser;
use gdk4::{Key, ModifierType};
diff --git a/src/parser.rs b/src/parser.rs
index 01f0e1b..b391202 100644
--- a/src/parser.rs
+++ b/src/parser.rs
@@ -1,7 +1,7 @@
+use crate::eval;
+use crate::eval::Num;
use crate::lexer::Lexer;
-use crate::num;
-use crate::num::Num;
-use num_bigint::BigInt;
+use num::BigInt;
use std::str::FromStr;
enum ParseError {
@@ -70,17 +70,17 @@ impl<'a> Parser<'a> {
return Err(ParseError::Consumed);
};
if negative {
- return Ok(num::float(-f));
+ return Ok(eval::float(-f));
}
- return Ok(num::float(f));
+ return Ok(eval::float(f));
}
let Ok(i) = BigInt::from_str(t) else {
return Err(ParseError::Consumed);
};
if negative {
- return Ok(num::int(-i));
+ return Ok(eval::int(-i));
}
- Ok(num::int(i))
+ Ok(eval::int(i))
}
fn paren_expr(&mut self) -> Result<Num, ParseError> {
@@ -96,10 +96,10 @@ impl<'a> Parser<'a> {
fn parse_const(&mut self) -> Result<Num, ParseError> {
if self.symbol("e") {
- return Ok(num::float(std::f64::consts::E));
+ return Ok(eval::float(std::f64::consts::E));
}
if self.symbol("pi") {
- return Ok(num::float(std::f64::consts::PI));
+ return Ok(eval::float(std::f64::consts::PI));
}
Err(ParseError::Empty)
}