Ответ 1
Ящик serialize
является внутренней частью стандартного распределения ржавчины. Он не будет доступен в стабильных/бета-каналах Rust 1.0.
Ячейкой rustc-serialize
было serialize
, но оно было перемещено в отдельный репозиторий и загружено в ящики .io, чтобы оно могло развиваться самостоятельно.
Это было сделано, потому что полезность rustc-serialize
огромна, но было нереально добиться ее стабилизации во времени для Rust 1.0. Поскольку распределение Rust запретит неустойчивые функции на стабильном канале, единственный способ продолжить использование инфраструктуры сериализации - 1) стабилизировать то, что у нас есть, или 2) перенести его на crates.io, где неустойчивые ограничения не применяются.
rustc-serialize
имеет много известных недостатков, а работает над, поэтому стабилизация того, что там действительно существует, не является вариантом.
Но функции Decodable/Encodable
требуют поддержки компилятора (поскольку плагины компилятора не будут стабильными ни для Rust 1.0). В качестве меры пресечения RustcDecodable/RustcEncodable
были изобретены как временная мера для ящика rustc-serialize
для использования явно. Это немного странно, но оно оставляет имена Decodable/Encodable
доступными для будущей совместимой версии serialize
, которая лучше, чем у нас сейчас (возможно, это то, что serde2
станет из вышеупомянутой ссылки).
Итак, пока не используйте rustc-serialize
и RustcDecodable/RustcEncodable
.
(Я прошу прощения, что я не могу придумать ссылку, чтобы привести все это. Это знание, которое я накопил с течением времени из проблем GitHub. Может быть, есть RFC, который все это выдает, не помню.)