Size: a a a

2020 December 26

MB

Mikail Bagishov in Rust Beginners
Александр Караев
Существует аналог слайса, но для разрывных диапазонов?

Например, я хочу склеить два слайса и работать с ним как с одним большим. Нужна какая-то абстракция, которая позволит унифицировать слайсы и склеенные итераторы (например, через chain). Очевидно, что свойство непрерывности я потеряю, но произвольный доступ по индексу мне нужен
std::ops::Index<usize>?
источник

MB

Mikail Bagishov in Rust Beginners
Готовых структур данных "два слайса" я не видел.
источник

АК

Александр Караев... in Rust Beginners
Mikail Bagishov
Готовых структур данных "два слайса" я не видел.
А структуру, в которую я могу положить как Chain, так и slice::Iter и работать одинаково? В идеале дженерик
источник

r

red75prime in Rust Beginners
T: IntoIterator<Item = U> + Index<usize, Output = U> ?
источник

АК

Александр Караев... in Rust Beginners
red75prime
T: IntoIterator<Item = U> + Index<usize, Output = U> ?
Если нет ничего готового, то примерно так и буду собирать по кусочкам. Спасибо
источник

TK

Traveller Kolsky in Rust Beginners
Dima N1ght
Народ, у меня есть ссылка на массив , назовём её array_ref, если я её дереференсю через звёздочку: *array_ref - это ведь не может быть потенциальным UB или может?
Что ты имеешь ввиду? Без ансейфа есть три варианта - &&, &T where T: Sized/!Sized. Первые два компилятор даст сделать, третий не пропустит.
источник

TK

Traveller Kolsky in Rust Beginners
Хотя второй сработает только в случае если T: Copy
источник

A

Adatan in Rust Beginners
Александр Караев
u32::from_le/be_bytes(&v[0..4].try_into().unwrap())
паникует
источник

A

Adatan in Rust Beginners
источник

MB

Mikail Bagishov in Rust Beginners
Так а почему ты 0..5 берешь?
Тебе же первые 4 байта нужны.
источник

A

Adatan in Rust Beginners
дак разве не [in..ex]?
источник

MB

Mikail Bagishov in Rust Beginners
Ну да
Тебе нужны байты номер 0,1,2 и 3
источник

Jøhn Đøꝩsøn in Rust Beginners
Adatan
дак разве не [in..ex]?
0, 1, 2, 3, 4, пять байт
источник

MB

Mikail Bagishov in Rust Beginners
То есть 0 <= i < 4
то есть 0..4
источник

A

Adatan in Rust Beginners
Бля, стыдно так ошибаться :(
источник

᠌᠌Sh1Yo in Rust Beginners
Есть программа с несколькими функциями, в каждой из которых происходит http запрос. Раньше я использовал не асинхронный reqwest и в каждую функцию посылал один и тот-же client дабы сохранялось соединение. Теперь нужно переходить на hyper, но проблема в том, что он ассинхронный и когда я посылаю client в одну из функций, выходит ошибка
-
 borrowed value does not live long enough
   |                 requires that `client` is borrowed for `'static

А при попытке  сделать const client выходит ошибка attempt to use a non-constant value in a constant.
Так вот, что можно сделать что бы программа заработала кроме как в каждой функции создавать новый client?
источник

a

antuan in Rust Beginners
᠌᠌Sh1Yo
Есть программа с несколькими функциями, в каждой из которых происходит http запрос. Раньше я использовал не асинхронный reqwest и в каждую функцию посылал один и тот-же client дабы сохранялось соединение. Теперь нужно переходить на hyper, но проблема в том, что он ассинхронный и когда я посылаю client в одну из функций, выходит ошибка
-
 borrowed value does not live long enough
   |                 requires that `client` is borrowed for `'static

А при попытке  сделать const client выходит ошибка attempt to use a non-constant value in a constant.
Так вот, что можно сделать что бы программа заработала кроме как в каждой функции создавать новый client?
Как один из самых простых вариантов - lazy_static
источник

᠌᠌Sh1Yo in Rust Beginners
antuan
Как один из самых простых вариантов - lazy_static
Спасибо, как-то не подумал, попробую
источник

MB

Mikail Bagishov in Rust Beginners
᠌᠌Sh1Yo
Есть программа с несколькими функциями, в каждой из которых происходит http запрос. Раньше я использовал не асинхронный reqwest и в каждую функцию посылал один и тот-же client дабы сохранялось соединение. Теперь нужно переходить на hyper, но проблема в том, что он ассинхронный и когда я посылаю client в одну из функций, выходит ошибка
-
 borrowed value does not live long enough
   |                 requires that `client` is borrowed for `'static

А при попытке  сделать const client выходит ошибка attempt to use a non-constant value in a constant.
Так вот, что можно сделать что бы программа заработала кроме как в каждой функции создавать новый client?
Передача клиентов через аргументы по-прежнему должна работать.
Может ты spawn-ы повставлял?
источник

᠌᠌Sh1Yo in Rust Beginners
Mikail Bagishov
Передача клиентов через аргументы по-прежнему должна работать.
Может ты spawn-ы повставлял?
Ну я пока на  hyper сразу не перешёл, решил async'и и await'ы расставить, а что, с клиентом от hyper будет работать?
источник