Size: a a a

2020 November 26

MB

Mikail Bagishov in Rust Beginners
std::vector это более хороший LIFO, чем std::deque, если нет рил-тайм требований
источник

MB

Mikail Bagishov in Rust Beginners
Ну точнее так: у него чуть получше локальность, но есть долгие переалокации
источник

П

Пашечка in Rust Beginners
Солидарен, сам когда-то удивлялся, но если так написали в справочнике, то кто я такой чтобы спорить с крутыми дядьками?)
источник

MB

Mikail Bagishov in Rust Beginners
Наверное, значительной разницы все равно нет
источник

MB

Mikail Bagishov in Rust Beginners
И кстати, растовый дек сильно отличается от stl-ного
источник

П

Пашечка in Rust Beginners
Честно, я вообще ни разу не придумал ситуации, когда мне нужны возможности деки... Всегда либо стека, либо очереди достаточно.
источник

MB

Mikail Bagishov in Rust Beginners
Ну первое что мне приходит в голову: чтобы искать кратчайшие пути в графе, в котором вес каждого ребра 0 либо 1.
источник

G

George in Rust Beginners
Как в актиксе правильно вернуть разные ошибки так, чтобы во внутренних обработчиках они легко прокидывались через ? ?
В данный момент хендлер актикса возвращает actix_web::Result<actix_web::web::Json<ОжидаемаяСущность>>, а все внутренние функции - anyhow::Result, однако тут с anyhow непонятно, как мапить ошибки правильно. Внутри ведь может случиться и что юзера нет (404), и 500, и 403 если на действие прав нет, а наверх это пробросить и замапить - сложно.
Вот в этом случае мне не нравится NotFound, потому что в внутри логически есть случай нарушения прав доступа(403), но маплю я на 404.
источник

G

George in Rust Beginners
А хотелось бы внутри что-то типа
if user.role != "admin" {
   return ErrorForbidden403(json!({"error": {"detail": "access violation"}}))
}

// или
return my_result.do_something()? // а там была 500, скажем, и отобразится она именно как пятисотая


Ведь проблема ещё и в том, что по-умолчанию актикс мапит это в plaintext, а не в plaintext можно только если руками возвращать HttpRespons-ы.
источник

IB

Ilya Bogdanov in Rust Beginners
George
Как в актиксе правильно вернуть разные ошибки так, чтобы во внутренних обработчиках они легко прокидывались через ? ?
В данный момент хендлер актикса возвращает actix_web::Result<actix_web::web::Json<ОжидаемаяСущность>>, а все внутренние функции - anyhow::Result, однако тут с anyhow непонятно, как мапить ошибки правильно. Внутри ведь может случиться и что юзера нет (404), и 500, и 403 если на действие прав нет, а наверх это пробросить и замапить - сложно.
Вот в этом случае мне не нравится NotFound, потому что в внутри логически есть случай нарушения прав доступа(403), но маплю я на 404.
источник

G

George in Rust Beginners
То есть выкидывать anyhow и конструировать таки свои ошибки, возвращая
fn something<RE: actix_web::error::ResponseError>() -> Result<ОжидаемаяСущность, RE>?
источник

IB

Ilya Bogdanov in Rust Beginners
ну я честно говоря исследований не проводил, может есть более оптимальные способы это делать, но в общем-то да
источник

A

Adatan in Rust Beginners
Какие есть удобные парсеры html? (на подобии BS4)
источник

a

antuan in Rust Beginners
Select, scraper.
В первом нельзя искать регэкспом
второй на основе CSS-селекторов, ищет меинтейнеров
источник

a

antuan in Rust Beginners
есть какая-то возможность использовать объекты, неявно реализующие трейты?
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=6ed1d3be8a51eb9f8a90a80837011c31
upd. правильный вопрос теперь :)
источник

ИЛ

Иван Лещенко... in Rust Beginners
antuan
есть какая-то возможность использовать объекты, неявно реализующие трейты?
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=6ed1d3be8a51eb9f8a90a80837011c31
upd. правильный вопрос теперь :)
В расте нет неявных реализаций для таких трейтов
источник

a

antuan in Rust Beginners
Иван Лещенко
В расте нет неявных реализаций для таких трейтов
форма ответа заставляет меня задать вопрос: а для каких есть?
источник

ИЛ

Иван Лещенко... in Rust Beginners
antuan
форма ответа заставляет меня задать вопрос: а для каких есть?
источник

ИЛ

Иван Лещенко... in Rust Beginners
И ещё как вариант
impl Trait for T
источник

ИЛ

Иван Лещенко... in Rust Beginners
Но это всё ещё далеко от того, что ты хочешь
источник