Size: a a a

Rust — русскоговорящее сообществo

2020 September 25

Э

Эрик in Rust — русскоговорящее сообществo
Ilya Lakhin
А impl A for Type?
Можно.
источник

IL

Ilya Lakhin in Rust — русскоговорящее сообществo
И в этом случае автоматически появляется impl B?
источник

Э

Эрик in Rust — русскоговорящее сообществo
Да.
источник

IL

Ilya Lakhin in Rust — русскоговорящее сообществo
Хотя погоди, это пожалуй то что надо
источник

IL

Ilya Lakhin in Rust — русскоговорящее сообществo
Дай-ка попробую в playground
источник

Э

Эрик in Rust — русскоговорящее сообществo
Ну смотри, это фактически TryFrom + From.
источник

Э

Эрик in Rust — русскоговорящее сообществo
Ты можешь только один из них заимплементить.
источник

IL

Ilya Lakhin in Rust — русскоговорящее сообществo
Да, все получилось. Большое спасибо! Это то что фактически мне нужно в моем случае
источник

Э

Эрик in Rust — русскоговорящее сообществo
Не забудь про ?Sized.
источник

IL

Ilya Lakhin in Rust — русскоговорящее сообществo
Где? И зачем? )
источник

Э

Эрик in Rust — русскоговорящее сообществo
impl<T: A + ?Sized> B for T {}
источник

Э

Эрик in Rust — русскоговорящее сообществo
Если там может быть ?Sized, конечно.
источник

IL

Ilya Lakhin in Rust — русскоговорящее сообществo
Какие есть варианты ?Sized?
источник

IL

Ilya Lakhin in Rust — русскоговорящее сообществo
Чем это может быть на практике?
источник

Э

Эрик in Rust — русскоговорящее сообществo
str, [T], трейт обжект.
источник

IL

Ilya Lakhin in Rust — русскоговорящее сообществo
Не, думаю, это нерелевантно
источник

ST

Stanislav Tkach in Rust — русскоговорящее сообществo
А есть что-то готовое (макрос) для преобразование enum во что-нибудь (не число, а, например, строку) и обратно? Проще, наверное, будет на примере:
enum E {
   A,
   B,
}

impl E {
   fn from_str(s: &str) -> Option<Self> {
       match s {
           "eee" => Some(Self::A),
           "z" => Some(Self::B),
           _ => None,
       }
   }
   
   fn as_str(&self) -> &'static str {
       match self {
           Self::A => "eee",
           Self::B => "z",
       }
   }
}

То есть, enum без данных и строки никак не связаны с названием вариантов. Так-то и руками написать несложно, но не нравится дублирование. Можно завернуть в макрос, но наверняка есть что-то готовое.
источник

Э

Эрик in Rust — русскоговорящее сообществo
Stanislav Tkach
А есть что-то готовое (макрос) для преобразование enum во что-нибудь (не число, а, например, строку) и обратно? Проще, наверное, будет на примере:
enum E {
   A,
   B,
}

impl E {
   fn from_str(s: &str) -> Option<Self> {
       match s {
           "eee" => Some(Self::A),
           "z" => Some(Self::B),
           _ => None,
       }
   }
   
   fn as_str(&self) -> &'static str {
       match self {
           Self::A => "eee",
           Self::B => "z",
       }
   }
}

То есть, enum без данных и строки никак не связаны с названием вариантов. Так-то и руками написать несложно, но не нравится дублирование. Можно завернуть в макрос, но наверняка есть что-то готовое.
Нет готового.
источник

AV

Andrey Vlasov in Rust — русскоговорящее сообществo
Stanislav Tkach
А есть что-то готовое (макрос) для преобразование enum во что-нибудь (не число, а, например, строку) и обратно? Проще, наверное, будет на примере:
enum E {
   A,
   B,
}

impl E {
   fn from_str(s: &str) -> Option<Self> {
       match s {
           "eee" => Some(Self::A),
           "z" => Some(Self::B),
           _ => None,
       }
   }
   
   fn as_str(&self) -> &'static str {
       match self {
           Self::A => "eee",
           Self::B => "z",
       }
   }
}

То есть, enum без данных и строки никак не связаны с названием вариантов. Так-то и руками написать несложно, но не нравится дублирование. Можно завернуть в макрос, но наверняка есть что-то готовое.
serde + serde(rename = "") ?
источник

AV

Andrey Vlasov in Rust — русскоговорящее сообществo
Andrey Vlasov
serde + serde(rename = "") ?
Вопрос, какой фронтенд использовать в таком случае
источник