Surely "1337" is the same as 1337, right?
![](https://programming.dev/pictrs/image/170721ad-9010-470f-a4a4-ead95f51f13b.png)
![](https://programming.dev/pictrs/image/515dd1be-3b88-4b93-95e3-41635351c8bd.webp?format=jpg&thumbnail=256)
Meme transcription:
Panel 1: Bilbo Baggins ponders, “After all… why should I care about the difference between int and String?
Panel 2: Bilbo Baggins is revealed to be an API developer. He continues, “JSON is always String, anyways…”
You are viewing a single comment
Rust has perfectly fine tools to deal with such issues, namely enums. Of course that cascades through every bit of related code and is a major pain.
Sadly it doesn't fix the bad documentation problem. I often don't care that a field is special and either give a string or number. This is fine.
What is not fine, and which should sentence you to eternal punishment, is to not clearly document it.
Don't you love when you publish a crate, have tested it on thousands of returned objects, only for the first issue be "field is sometimes null/other type?". You really start questioning everything about the API, and sometimes you'd rather parse it as
serde::Value
and call it a day.API is sitting there cackling like a mad scientist in a lightning storm.
True, and also true.