Size: a a a

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

2020 April 20

AZ

Alex Zhukovsky in Rust — русскоговорящее сообществo
Эрик
Со слайсами даже сам язык поможет строить такую non-empty структуру:
pub fn split_first(&self) -> Option<(&T, &[T])> (или split_first_mut, в зависимости от ситуации)
со слайсами там в комментах внизу я варик накидал уже
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
ЯННП
Вот у меня есть proc_macro2::Literal (https://docs.rs/proc-macro2/1.0.10/proc_macro2/struct.Literal.html). Как мне определить, какой конкретно это литерал и достать из него значение?
источник

EG

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

Э

Эрик in Rust — русскоговорящее сообществo
Emmanuel Goldstein
Он выглядит совершенно непрозрачным, как будто его можно создать, но не использовать.
impl From<Literal> for TokenTree
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
Эрик
impl From<Literal> for TokenTree
Это просто завернёт его в TokenTree::Literal
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
Я нашёл ответ: syn::Lit умеет его парсить методом перевода в строку
источник

Э

Эрик in Rust — русскоговорящее сообществo
impl FromIterator<TokenTree> for TokenStream
impl Extend<TokenTree> for TokenStream
источник

Э

Эрик in Rust — русскоговорящее сообществo
impl From<TokenTree> for TokenStream
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
И?
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
Я получу TokenStream из одного значения
источник

Э

Эрик in Rust — русскоговорящее сообществo
impl IntoIterator for TokenStream
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
Эрик
impl IntoIterator for TokenStream
Великолепно, я получу итератор, который один раз возвращает TokenTree, в котором лежит исходный Literal
источник

Э

Эрик in Rust — русскоговорящее сообществo
А что тебе надо? Там Debug и Display есть для всех типов.
источник

Э

Эрик in Rust — русскоговорящее сообществo
TokenStream вообще можно Extend'ить.
источник

Э

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

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
Мне нужно из литерала вытащить его значение
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
Т. е. у меня есть объект литерала "test" и мне нужно из него получить строку "test"
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
Заодно убедившись, что это именно строка
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
Кажется, единственный способ это сделать — это через syn::Lit::new()
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
Который делает literal.to_string() и дальше честно его парсит
источник