Skip to content

Commit a2b83a8

Browse files
committed
feat: added taurus-core crate
1 parent 9d75c6f commit a2b83a8

3 files changed

Lines changed: 80 additions & 0 deletions

File tree

crates/taurus-core/Cargo.toml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
[package]
2+
name = "taurus-core"
3+
version.workspace = true
4+
edition.workspace = true
5+
6+
[dependencies]
7+
tucana = { workspace = true }
8+
base64 = { workspace = true }
9+
rand = { workspace = true }
10+
log = { workspace = true }
11+
futures-lite = { workspace = true }
12+
async-trait = { workspace = true }
13+
uuid = { workspace = true }
14+

crates/taurus-core/src/lib.rs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
//! Taurus core runtime library.
2+
//!
3+
//! Exposes the runtime engine, strongly-typed execution contracts, and shared
4+
//! value/error utilities used by runtime binaries.
5+
6+
mod handler;
7+
pub mod runtime;
8+
pub mod types;
9+
pub mod value;

crates/taurus-core/src/value.rs

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
//! Numeric/value conversion helpers used by runtime handlers.
2+
3+
use tucana::shared::{NumberValue, Value, number_value, value::Kind};
4+
5+
pub fn number_value_from_f64(n: f64) -> NumberValue {
6+
NumberValue {
7+
number: Some(number_value::Number::Float(n)),
8+
}
9+
}
10+
11+
pub fn number_value_from_i64(n: i64) -> NumberValue {
12+
NumberValue {
13+
number: Some(number_value::Number::Integer(n)),
14+
}
15+
}
16+
17+
pub fn value_from_f64(n: f64) -> Value {
18+
Value {
19+
kind: Some(Kind::NumberValue(number_value_from_f64(n))),
20+
}
21+
}
22+
23+
pub fn value_from_i64(n: i64) -> Value {
24+
Value {
25+
kind: Some(Kind::NumberValue(number_value_from_i64(n))),
26+
}
27+
}
28+
29+
pub fn number_to_f64(n: &NumberValue) -> Option<f64> {
30+
match n.number {
31+
Some(number_value::Number::Integer(i)) => Some(i as f64),
32+
Some(number_value::Number::Float(f)) => Some(f),
33+
None => None,
34+
}
35+
}
36+
37+
pub fn number_to_i64_lossy(n: &NumberValue) -> Option<i64> {
38+
match n.number {
39+
Some(number_value::Number::Integer(i)) => Some(i),
40+
Some(number_value::Number::Float(f)) => {
41+
if f.is_finite() {
42+
Some(f as i64)
43+
} else {
44+
None
45+
}
46+
}
47+
None => None,
48+
}
49+
}
50+
51+
pub fn number_to_string(n: &NumberValue) -> String {
52+
match n.number {
53+
Some(number_value::Number::Integer(i)) => i.to_string(),
54+
Some(number_value::Number::Float(f)) => f.to_string(),
55+
None => "null".to_string(),
56+
}
57+
}

0 commit comments

Comments
 (0)