| > What about user-supplied JSON schemas? You can't add types at runtime. That kinda sounds like you just launched the goalposts into the ocean right here. > Also, JSON schemas allows you to encode semantics about the value not only their types: JSON schemas encode types as constraints, because "type" is just the "trival" JSON type. "URL" has no reason not to be a type. > in Rust you would need an enum Yes? Enumerations get encoded as enums, that sounds logical. > a deserializer from the string to the enum. Here's how complex the deserializer is: #[derive(Deserialize)]
#[serde(rename_all = "lowercase")]
enum Role { Admin, Moderator, Member, Anonymous }
And the second line is only there because we want the internal Rust code to look like Rust. |
I come from highly dynamic languages, and even when I was doing C/C++ 10 years ago, I would do more at runtime that what could be considered "best practice".