Size: a a a

2020 November 13

SL

S. L. in Rust Beginners
разница между функциями и замыканиями в том, что замыкание может брать переменные из родительского скопа в отличии от функции, которая видит только то, что внути фигурных скобках и переданные значения?
источник

r

red75prime in Rust Beginners
S. L.
разница между функциями и замыканиями в том, что замыкание может брать переменные из родительского скопа в отличии от функции, которая видит только то, что внути фигурных скобках и переданные значения?
Да, замыкание - это функция + состояние.
источник

SH

Stas Hehera in Rust Beginners
ребят как написать тест чтобы проверить контретную ошибку?
источник

А⚙

Антон ⚙️ in Rust Beginners
Stas Hehera
ребят как написать тест чтобы проверить контретную ошибку?
Чего ты хочешь добиться?
источник

SH

Stas Hehera in Rust Beginners
та мне надо протестировать что вызываеться эта ошибка
источник

SH

Stas Hehera in Rust Beginners
всё придумал) спасибо)
источник

А⚙

Антон ⚙️ in Rust Beginners
Stas Hehera
та мне надо протестировать что вызываеться эта ошибка
Ну по твоему описанию выходит что-то вроде
#[test]
fn test_for_specific_error() {
   assert_eq!(my_func(bad_argument), Err(ExpectedError));
}
источник

SH

Stas Hehera in Rust Beginners
Антон ⚙️
Ну по твоему описанию выходит что-то вроде
#[test]
fn test_for_specific_error() {
   assert_eq!(my_func(bad_argument), Err(ExpectedError));
}
да но это не будет работать, надо чтобы enum имел derive(PartialEq)
источник

А⚙

Антон ⚙️ in Rust Beginners
Stas Hehera
да но это не будет работать, надо чтобы enum имел derive(PartialEq)
А в твоём случае это не так?
источник

SH

Stas Hehera in Rust Beginners
Stas Hehera
да но это не будет работать, надо чтобы enum имел derive(PartialEq)
кароче, можно же взять просто написать
assert!(match some_with_err {
     Errors::MyKind {..} => true,
     _ => false,
}
источник

А⚙

Антон ⚙️ in Rust Beginners
Stas Hehera
кароче, можно же взять просто написать
assert!(match some_with_err {
     Errors::MyKind {..} => true,
     _ => false,
}
Лучше assert!(matches!(some_err, Err(MyError)));
источник

SH

Stas Hehera in Rust Beginners
ухти, пасіб)
источник

li

long long int in Rust Beginners
Подскажите, пожалуйста, зачем тут отдельный блок для замыкания?
Пример отсюда https://doc.rust-lang.org/std/ops/trait.FnMut.html
let mut x = 5;
{
   let mut square_x = || x *= x;
   square_x();
}
assert_eq!(x, 25);
источник

А⚙

Антон ⚙️ in Rust Beginners
long long int
Подскажите, пожалуйста, зачем тут отдельный блок для замыкания?
Пример отсюда https://doc.rust-lang.org/std/ops/trait.FnMut.html
let mut x = 5;
{
   let mut square_x = || x *= x;
   square_x();
}
assert_eq!(x, 25);
До non-lexical lifetimes замыкание square_x мутабельно заимствовало x и, таким образом, не давало воспользоваться x до конца области видимости. Отдельный блок искусственно ограничивает время жизни square_x и, соответственно, мутабельной ссылки на x. Сейчас это скомпилируется и без отдельного блока.
источник

li

long long int in Rust Beginners
Антон ⚙️
До non-lexical lifetimes замыкание square_x мутабельно заимствовало x и, таким образом, не давало воспользоваться x до конца области видимости. Отдельный блок искусственно ограничивает время жизни square_x и, соответственно, мутабельной ссылки на x. Сейчас это скомпилируется и без отдельного блока.
Что такое non-lexical lifetimes?
источник

r

red75prime in Rust Beginners
long long int
Что такое non-lexical lifetimes?
Ссылка прекращает заимствование после последнего использования, а не в конце блока
источник

li

long long int in Rust Beginners
Спасибо
источник

А⚙

Антон ⚙️ in Rust Beginners
Начитался про вакансии и решил подучить Rust?
источник

SY

Sergey Y. in Rust Beginners
Антон ⚙️
Начитался про вакансии и решил подучить Rust?
Наоборот)
источник

SY

Sergey Y. in Rust Beginners
Склоняют к расту, но нужно же и про вакансии думать
источник