Size: a a a

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

2020 November 17

p

polunin.ai in Rust — русскоговорящее сообществo
Kitsu
Можно как-нибудь объеденить несколько impl Display без лишних аллокаций (e.g. format!("{}{}{}", x, y, z))?
>объединить несколько impl Display

Это как?
источник

r

red75prime in Rust — русскоговорящее сообществo
Kitsu
Можно как-нибудь объеденить несколько impl Display без лишних аллокаций (e.g. format!("{}{}{}", x, y, z))?
move || { format!("{}{}{}", x, y, z) } ?
источник

ИЛ

Иван Лещенко... in Rust — русскоговорящее сообществo
red75prime
move || { format!("{}{}{}", x, y, z) } ?
А в чём отличие?
источник

K

Kitsu in Rust — русскоговорящее сообществo
Adam K
format_args!?
Да, спасибо
источник

ИЛ

Иван Лещенко... in Rust — русскоговорящее сообществo
Kitsu
Да, спасибо
Он вроде не работает без аллокаций, если туда передан хоть один форматируемый элемент
источник

ИЛ

Иван Лещенко... in Rust — русскоговорящее сообществo
Иван Лещенко
Он вроде не работает без аллокаций, если туда передан хоть один форматируемый элемент
источник

r

red75prime in Rust — русскоговорящее сообществo
Иван Лещенко
А в чём отличие?
Особо ни в чём. Не так понял вопрос
источник

r

red75prime in Rust — русскоговорящее сообществo
Это про другое. Позволяет взять результирующую строку, если она уже лежит в памяти.
источник

VK

Vasily Kondratyev in Rust — русскоговорящее сообществo
Почему anyhow не выводит изначальную ошибку, только контекст?

use anyhow::{anyhow, Context};

Если (файла нет) так:
let file = File::open(filename)?;
получаем "No such file or directory (os error 2)"

Если так:
let file = File::open(filename).context(format!("file {:?}", filename))?;
получаем только "file имя"
источник

r

red75prime in Rust — русскоговорящее сообществo
Vasily Kondratyev
Почему anyhow не выводит изначальную ошибку, только контекст?

use anyhow::{anyhow, Context};

Если (файла нет) так:
let file = File::open(filename)?;
получаем "No such file or directory (os error 2)"

Если так:
let file = File::open(filename).context(format!("file {:?}", filename))?;
получаем только "file имя"
Использовать Debug, а не Display, если нужен весь стек. println!("{:?}", err)
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
Или "{:#}"
источник

VK

Vasily Kondratyev in Rust — русскоговорящее сообществo
для этого надо распаковать саму ошибку, а этого делать бы не хотелось
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
Не понял проблему. Надо просто дописать 1 символ к строке форматирования.
источник

VK

Vasily Kondratyev in Rust — русскоговорящее сообществo
видимо, я чего-то не понимаю
сделал так:
источник

VK

Vasily Kondratyev in Rust — русскоговорящее сообществo
источник

VK

Vasily Kondratyev in Rust — русскоговорящее сообществo
получил вывод
file "00_Init.test"
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
Не, это надо сделать в том месте, где ты саму ошибку печатаешь.
источник

VK

Vasily Kondratyev in Rust — русскоговорящее сообществo
а хотелось бы
file "00_Init.test": No such file or directory (os error 2)
источник

VK

Vasily Kondratyev in Rust — русскоговорящее сообществo
а! понял, спасибо
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
И если это происходит в мейне, то даже не обязательно ее печатать самому, просто возвращай дальше из мйена
источник