68 lines
1.3 KiB
Markdown
68 lines
1.3 KiB
Markdown
## RON extensions
|
|
|
|
RON has extensions that can be enabled by adding the following attribute at the top of your RON document:
|
|
|
|
`#![enable(...)]`
|
|
|
|
# unwrap_newtypes
|
|
|
|
You can add this extension by adding the following attribute at the top of your RON document:
|
|
|
|
`#![enable(unwrap_newtypes)]`
|
|
|
|
This feature enables RON to automatically unwrap simple tuples.
|
|
|
|
```rust
|
|
struct NewType(u32);
|
|
struct Object {
|
|
pub new_type: NewType,
|
|
}
|
|
```
|
|
|
|
Without `unwrap_newtypes`, because the value `5` can not be saved into `NewType(u32)`, your RON document would look like this:
|
|
|
|
``` ron
|
|
(
|
|
new_type: (5),
|
|
)
|
|
```
|
|
|
|
With the `unwrap_newtypes` extension, this coercion is done automatically. So `5` will be interpreted as `(5)`.
|
|
|
|
``` ron
|
|
#![enable(unwrap_newtypes)]
|
|
(
|
|
new_type: 5,
|
|
)
|
|
```
|
|
|
|
# implicit_some
|
|
|
|
You can add this extension by adding the following attribute at the top of your RON document:
|
|
|
|
`#![enable(implicit_some)]`
|
|
|
|
This feature enables RON to automatically convert any value to `Some(value)` if the deserialized struct requires it.
|
|
|
|
```rust
|
|
struct Object {
|
|
pub value: Option<u32>,
|
|
}
|
|
```
|
|
|
|
Without this feature, you would have to write this RON document.
|
|
|
|
```ron
|
|
(
|
|
value: Some(5),
|
|
)
|
|
```
|
|
|
|
Enabling the feature would automatically infer `Some(x)` if `x` is given. In this case, RON automatically casts this `5` into a `Some(5)`.
|
|
|
|
```ron
|
|
(
|
|
value: 5,
|
|
)
|
|
```
|