String from flux

This commit is contained in:
2025-08-25 10:08:54 +02:00
parent 87cfb477a7
commit 9132e3de51
3 changed files with 42 additions and 12 deletions
+1 -2
View File
@@ -1,4 +1,3 @@
def hello(name): def hello(name):
print("Hello, bro! " + name) print("Hello, bro! " + name)
# return "Idk, return value i guess" return "Idk, return value i guess"
return 1.1
+1 -1
View File
@@ -7,5 +7,5 @@ fn main() {
let gil = python::get_gil(); let gil = python::get_gil();
let m = python::import("bro.py", &gil); let m = python::import("bro.py", &gil);
println!("{:?}", m.call("hello", vec![&"leo"]).extract::<f64>()); println!("{:?}", m.call("hello", vec![&"leo"]).extract::<String>());
} }
+40 -9
View File
@@ -2,6 +2,8 @@ use std::collections::{BTreeMap, HashMap};
use crate::{FluxValue, ToFlux}; use crate::{FluxValue, ToFlux};
// To Flux
impl ToFlux for i64 { impl ToFlux for i64 {
fn to_flux(&self) -> FluxValue { fn to_flux(&self) -> FluxValue {
FluxValue::Int(*self) FluxValue::Int(*self)
@@ -14,15 +16,6 @@ impl ToFlux for f64 {
} }
} }
impl From<FluxValue> 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 { impl ToFlux for &str {
fn to_flux(&self) -> FluxValue { fn to_flux(&self) -> FluxValue {
FluxValue::Str(self.to_string()) FluxValue::Str(self.to_string())
@@ -35,6 +28,17 @@ impl ToFlux for String {
} }
} }
// From Flux
impl From<FluxValue> 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<FluxValue> for i64 { impl From<FluxValue> for i64 {
fn from(value: FluxValue) -> Self { fn from(value: FluxValue) -> Self {
match value { match value {
@@ -44,6 +48,33 @@ impl From<FluxValue> for i64 {
} }
} }
impl From<FluxValue> for i32 {
fn from(value: FluxValue) -> Self {
match value {
FluxValue::Int(i) => i as i32,
v => panic!("Expected Int, instead got {v:?}"),
}
}
}
impl From<FluxValue> for u32 {
fn from(value: FluxValue) -> Self {
match value {
FluxValue::Int(i) => i as u32,
v => panic!("Expected Int, instead got {v:?}"),
}
}
}
impl From<FluxValue> for String {
fn from(value: FluxValue) -> Self {
match value {
FluxValue::Str(s) => s,
v => panic!("Expected Str, instead got {v:?}"),
}
}
}
impl<K: ToFlux, V: ToFlux> ToFlux for HashMap<K, V> { impl<K: ToFlux, V: ToFlux> ToFlux for HashMap<K, V> {
fn to_flux(&self) -> FluxValue { fn to_flux(&self) -> FluxValue {
FluxValue::Map( FluxValue::Map(