Генератор структур Rust
Генератор структур Rust даёт отправную точку по одному образцу; какие поля действительно необязательны, показывает собственная схема API.
🔒 Этот инструмент работает полностью в вашем браузере. Ваши файлы никогда не загружаются на сервер.
Разработчик
Генератор структур Rust
Предпросмотр интерфейса — без загрузки и внешних сервисов.
Структуры Rust
Три вложенные структуры с #[derive(Serialize, Deserialize, Debug)], user_id переименовано из userId, а email типизировано как Option<String>, потому что в образце было null.
Как работает генератор структур Rust
- Вставьте показательный JSON-образец — такой, где заполнено каждое необязательное поле, а не только минимальный случай.
- Выберите derive-макросы и нужно ли переименовывать поля в snake_case с помощью атрибутов serde rename.
- Скопируйте структуры в свой crate и сверьте типы Option с тем, что реально гарантирует API.
FAQ
Почему некоторые поля — Option?
Потому что в образце там было null, либо поле отсутствовало. Поле, всегда присутствующее в вашем образце, будет сгенерировано как обычный тип, что вызовет панику при десериализации, как только API однажды его опустит.
Даёт ли один JSON-образец правильные типы?
Он даёт типы, согласованные с этим образцом. Случайно маленькие целые числа становятся i64, а поле, которое в одном ответе строка, а в другом число, не будет обнаружено. Сверяйтесь со схемой API.
А как насчёт переименования в snake_case?
Соглашение Rust требует полей в snake_case, тогда как большинство JSON API используют camelCase. Генерация атрибутов serde rename сохраняет идиоматичность с обеих сторон без ручного слоя сопоставления.
Сравнение
| Функция | Online Tool Store | CLI-скрипт | Плагин для IDE |
|---|---|---|---|
| Включены derive serde | ✓ | ✗ | ✓ |
| Option для nullable | ✓ | ✗ | ✓ |
| Ничего не загружается | ✓ | Локально | ✗ |
| Не требует установки | ✓ | ✗ | ✓ |
Генератор структур Rust даёт отправную точку по одному образцу; какие поля действительно необязательны, показывает собственная схема API.