Я хотел бы создать «ограниченный» тип, который ведет себя как String
, но по построению проверяет, что он соответствует некоторому синтаксису.Например, мы можем создать тип Identifier
, который действует как String
, но обеспечивает соответствие всех символов [a-zA-Z_]
.
В частности, я хочу, чтобы были реализованы обычные черты (Display
,Ord
и т. Д.), И я хочу, чтобы serde::Serialize
и serde::Deserialize
вели себя так же, как с обычным String
, за исключением того, что мы проверяем при десериализации.
Существует ли идиоматический способ сделать этоили мне придется реализовать все черты вручную?