diff --git a/bro.py b/bro.py index f3fefaa..226a16b 100644 --- a/bro.py +++ b/bro.py @@ -1,4 +1,3 @@ def hello(name): print("Hello, bro! " + name) - # return "Idk, return value i guess" - return 1.1 \ No newline at end of file + return "Idk, return value i guess" \ No newline at end of file diff --git a/src/main.rs b/src/main.rs index 230c6f7..e4d8419 100644 --- a/src/main.rs +++ b/src/main.rs @@ -7,5 +7,5 @@ fn main() { let gil = python::get_gil(); let m = python::import("bro.py", &gil); - println!("{:?}", m.call("hello", vec![&"leo"]).extract::()); + println!("{:?}", m.call("hello", vec![&"leo"]).extract::()); } diff --git a/src/values.rs b/src/values.rs index 9f1301a..a5a5577 100644 --- a/src/values.rs +++ b/src/values.rs @@ -2,6 +2,8 @@ use std::collections::{BTreeMap, HashMap}; use crate::{FluxValue, ToFlux}; +// To Flux + impl ToFlux for i64 { fn to_flux(&self) -> FluxValue { FluxValue::Int(*self) @@ -14,15 +16,6 @@ impl ToFlux for f64 { } } -impl From for f64 { - fn from(value: FluxValue) -> Self { - match value { - FluxValue::Float(bits) => f64::from_bits(bits), - v => panic!("Expected Int, instead got {v:?}"), - } - } -} - impl ToFlux for &str { fn to_flux(&self) -> FluxValue { FluxValue::Str(self.to_string()) @@ -35,6 +28,17 @@ impl ToFlux for String { } } +// From Flux + +impl From for f64 { + fn from(value: FluxValue) -> Self { + match value { + FluxValue::Float(bits) => f64::from_bits(bits), + v => panic!("Expected Float, instead got {v:?}"), + } + } +} + impl From for i64 { fn from(value: FluxValue) -> Self { match value { @@ -44,6 +48,33 @@ impl From for i64 { } } +impl From for i32 { + fn from(value: FluxValue) -> Self { + match value { + FluxValue::Int(i) => i as i32, + v => panic!("Expected Int, instead got {v:?}"), + } + } +} + +impl From for u32 { + fn from(value: FluxValue) -> Self { + match value { + FluxValue::Int(i) => i as u32, + v => panic!("Expected Int, instead got {v:?}"), + } + } +} + +impl From for String { + fn from(value: FluxValue) -> Self { + match value { + FluxValue::Str(s) => s, + v => panic!("Expected Str, instead got {v:?}"), + } + } +} + impl ToFlux for HashMap { fn to_flux(&self) -> FluxValue { FluxValue::Map(