21 lines
547 B
Rust
21 lines
547 B
Rust
//! `Serialize` and `Deserialize` implementations for extensible events (MSC1767).
|
|
|
|
use js_int::UInt;
|
|
use serde::{de, Deserialize};
|
|
|
|
use super::{ZoomLevel, ZoomLevelError};
|
|
|
|
impl<'de> Deserialize<'de> for ZoomLevel {
|
|
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
|
|
where
|
|
D: serde::Deserializer<'de>,
|
|
{
|
|
let uint = UInt::deserialize(deserializer)?;
|
|
if uint > Self::MAX.into() {
|
|
Err(de::Error::custom(ZoomLevelError::TooHigh))
|
|
} else {
|
|
Ok(Self(uint))
|
|
}
|
|
}
|
|
}
|