#rust #enums
Вопрос:
Я создаю библиотеку локалей в Rust, и мне нужно перечисление территорий.
Большинство кодов территорий могут быть представлены в виде значения перечисления, Uk, Jp, Kr … . Но есть некоторые коды территорий, содержащие только цифры, такие как 001, 002 … и т. Д.
Поэтому я написал перечисление, как показано ниже.
#[derive(Debug, PartialEq, Eq)]
#[repr(u16)]
pub enum Territory {
_001,
_002,
Us,
Uk,
Jp,
Kp,
Kr,
}
Однако в Rust имена, начинающиеся с подчеркивания, имеют разные значения.
Поэтому я сомневаюсь, правильный ли это путь.
Есть ли какой-нибудь другой способ для этого дела? Есть ли примеры таких случаев в другой хорошо спроектированной библиотеке?
Комментарии:
1. Используются ли они так часто, что более длинное название не подходит? Что-то вроде
Unnamed001
«возможно»?2. @kmdreko 001 не является безымянной областью. В деталях 001 указывает на мир, а 002-на Африку. Есть, конечно, длинные английские имена. Но коды территорий должны быть нейтральными по языку.
3. Может быть, именно
N001
тогда? Тебе придется выбрать какого-нибудь персонажа.
Ответ №1:
Я не думаю, что существует какое-либо соглашение специально для этого случая. Я бы предложил вам выбрать букву или короткое слово в качестве префикса. Примером может быть Num001
, Num002
,…. Если вы хотите, чтобы ваши варианты перечисления были отсортированы и каким-то образом числовые значения находились вверху или внизу списка, даже какой-то искусственный префикс, такой как Aaa
или Zzz
, может оказаться неплохой идеей.
Комментарии:
1. Мои кандидаты-T001, T002 … или _001, _002, как написано в вопросе. Действительно ли эта плохая идея начинается с подчеркивания? Я бы хотел, чтобы значения перечисления были отсортированы..