diff --git a/RELEASES.md b/RELEASES.md index 97fc547e..e3daa084 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -14,6 +14,7 @@ Breaking changes * `GlobalFileModuleResolver` is removed because its performance gain over the `FileModuleResolver` is no longer very significant. * The following `EvalAltResult` variants are removed and merged into `EvalAltResult::ErrorMismatchDataType`: `ErrorCharMismatch`, `ErrorNumericIndexExpr`, `ErrorStringIndexExpr`, `ErrorImportExpr`, `ErrorLogicGuard`, `ErrorBooleanArgMismatch` * `Scope::iter_raw` returns an iterator with an additional field indicating whether the variable is constant or not. +* `rhai::ser` and `rhai::de` namespaces are merged into `rhai::serde`. New features ------------ diff --git a/doc/src/rust/serde.md b/doc/src/rust/serde.md index 7b9a12f1..a1a01ae2 100644 --- a/doc/src/rust/serde.md +++ b/doc/src/rust/serde.md @@ -14,12 +14,12 @@ A [`Dynamic`] can be seamlessly converted to and from a type that implements Serialization ------------- -The function `rhai::ser::to_dynamic` automatically converts any Rust type that implements +The function `rhai::serde::to_dynamic` automatically converts any Rust type that implements [`serde::Serialize`](https://docs.serde.rs/serde/trait.Serialize.html) into a [`Dynamic`]. This is usually not necessary because using [`Dynamic::from`][`Dynamic`] is much easier and is essentially the same thing. The only difference is treatment for integer values. `Dynamic::from` will keep the different -integer types intact, while `rhai::ser::to_dynamic` will convert them all into [`INT`][standard types] +integer types intact, while `rhai::serde::to_dynamic` will convert them all into [`INT`][standard types] (i.e. the system integer type which is `i64` or `i32` depending on the [`only_i32`] feature). In particular, Rust `struct`'s (or any type that is marked as a `serde` map) are converted into [object maps] @@ -27,11 +27,11 @@ while Rust `Vec`'s (or any type that is marked as a `serde` sequence) are conver While it is also simple to serialize a Rust type to `JSON` via `serde`, then use [`Engine::parse_json`]({{rootUrl}}/language/json.md) to convert it into an [object map], -`rhai::ser::to_dynamic` serializes it to [`Dynamic`] directly via `serde` without going through the `JSON` step. +`rhai::serde::to_dynamic` serializes it to [`Dynamic`] directly via `serde` without going through the `JSON` step. ```rust use rhai::{Dynamic, Map}; -use rhai::ser::to_dynamic; +use rhai::serde::to_dynamic; #[derive(Debug, serde::Serialize)] struct Point { @@ -64,7 +64,7 @@ map.is::() == true; Deserialization --------------- -The function `rhai::de::from_dynamic` automatically converts a [`Dynamic`] value into any Rust type +The function `rhai::serde::from_dynamic` automatically converts a [`Dynamic`] value into any Rust type that implements [`serde::Deserialize`](https://docs.serde.rs/serde/trait.Deserialize.html). In particular, [object maps] are converted into Rust `struct`'s (or any type that is marked as @@ -73,7 +73,7 @@ as a `serde` sequence). ```rust use rhai::{Engine, Dynamic}; -use rhai::de::from_dynamic; +use rhai::serde::from_dynamic; #[derive(Debug, serde::Deserialize)] struct Point { diff --git a/src/serde/de.rs b/src/serde_impl/de.rs similarity index 99% rename from src/serde/de.rs rename to src/serde_impl/de.rs index 0cf181ba..ad73731a 100644 --- a/src/serde/de.rs +++ b/src/serde_impl/de.rs @@ -78,7 +78,7 @@ impl<'de> DynamicDeserializer<'de> { /// # #[cfg(not(feature = "no_object"))] /// # { /// use rhai::{Dynamic, Array, Map, INT}; -/// use rhai::de::from_dynamic; +/// use rhai::serde::from_dynamic; /// use serde::Deserialize; /// /// #[derive(Debug, Deserialize, PartialEq)] diff --git a/src/serde/mod.rs b/src/serde_impl/mod.rs similarity index 100% rename from src/serde/mod.rs rename to src/serde_impl/mod.rs diff --git a/src/serde/ser.rs b/src/serde_impl/ser.rs similarity index 99% rename from src/serde/ser.rs rename to src/serde_impl/ser.rs index f1a2ab77..90dab3c5 100644 --- a/src/serde/ser.rs +++ b/src/serde_impl/ser.rs @@ -55,7 +55,7 @@ impl DynamicSerializer { /// # #[cfg(not(feature = "no_float"))] /// # { /// use rhai::{Dynamic, Array, Map, INT}; -/// use rhai::ser::to_dynamic; +/// use rhai::serde::to_dynamic; /// use serde::Serialize; /// /// #[derive(Debug, serde::Serialize, PartialEq)] diff --git a/src/serde/str.rs b/src/serde_impl/str.rs similarity index 100% rename from src/serde/str.rs rename to src/serde_impl/str.rs