-
-
Notifications
You must be signed in to change notification settings - Fork 184
Closed
Description
When using serde feature to deserialize a struct if the floating point values are negative zero they're converted to zero.
cargo.toml
[package]
name = "mlua_serde_bug"
version = "0.1.0"
edition = "2024"
[dependencies]
mlua = { version = "0.11.1", features = ["luau", "send", "serde"] }
serde = { version = "1.0.219", features = ["serde_derive"]}
anyhow = { version = "1.0", optional = true }
main.rs
use mlua::{Lua, LuaSerdeExt, Result, Table, Value};
use serde::Deserialize;
#[derive(Deserialize)]
struct Position {
pub x: f32,
pub y: f32,
}
fn main() -> Result<()> {
let lua = Lua::new();
let value: Value = lua.load(r#"{x=-0.0,y=-0}"#).eval()?;
let table: &Table = value.as_table().unwrap();
assert!(table.raw_get::<f32>("x")?.is_sign_negative());
assert!(table.raw_get::<f32>("y")?.is_sign_negative());
let position: Position = lua.from_value(value)?;
assert!(position.x.is_sign_negative());
assert!(position.y.is_sign_negative());
Ok(())
}
Metadata
Metadata
Assignees
Labels
No labels