Size: a a a

2020 October 25

АМ

Александр Мещеряков... in Rust Beginners
В смысле, без порта?
источник

G

GWM in Rust Beginners
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=f389c1539f8df9fb0bd216eef6ef6fe1

Подскажите пожалуйста как так-то?

no method named unwrap found for enum std::result::Result<F, <F as std::str::FromStr>::Err> in the current scope
источник

IB

Ivan Boldyrev in Rust Beginners
GWM
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=f389c1539f8df9fb0bd216eef6ef6fe1

Подскажите пожалуйста как так-то?

no method named unwrap found for enum std::result::Result<F, <F as std::str::FromStr>::Err> in the current scope
Там же написано.  unwrap должен как-то репортить, если придёт Err, он должен уметь его напечатать.
источник

/

/bin/cat in Rust Beginners
источник

G

GWM in Rust Beginners
Ivan Boldyrev
Там же написано.  unwrap должен как-то репортить, если придёт Err, он должен уметь его напечатать.
Да, my bad, не дочитал ошибку до конца.
А как правильно указать что у F::Err должен быть std::fmt::Debug?
источник

G

GWM in Rust Beginners
А без nightly как-то можно?
источник

IB

Ivan Boldyrev in Rust Beginners
GWM
Да, my bad, не дочитал ошибку до конца.
А как правильно указать что у F::Err должен быть std::fmt::Debug?
источник

G

GWM in Rust Beginners
Спасибо!
источник

M

Maxim Bogdanov in Rust Beginners
подскажите плз, почему нельзя делать так: https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=e95e347eb66e54a4c4a36ac809265c3a
источник

M

Maxim Bogdanov in Rust Beginners
cannot borrow `*a as mutable more than once at a time`
но прикол же в том, что выражение в скобках выполняется по-очереди и всё, что занималось, должно отдаваться и в итоге код этот должен работать.
источник

M

Maxim Bogdanov in Rust Beginners
если разложить это на несколько строк, то работает, Но я хочу понять, почему не работает в одну строку
источник

АМ

Александр Мещеряков... in Rust Beginners
Как я понимаю, минимальная единица оценки - это statement. Временные значения также в нем живут до ;
источник

M

Maxim Bogdanov in Rust Beginners
хм интересно, я думал раст этот стейтмент раскладывает на AST
источник

M

Maxim Bogdanov in Rust Beginners
ну и анализирует также, если чайлды заняли и не отдают то да, ошибка, а тут вроде всё отдаётся
источник

M

Maxim Bogdanov in Rust Beginners
нельзя:
a.test(a.test(1));

можно:
let res = a.test(1);
a.test(res);

хотелось бы конечно понять логику, почему так
источник

АМ

Александр Мещеряков... in Rust Beginners
a.test(a.test(1));

Это можно представить как

a.test({      // first mutable borrow
   a.test(1) // second mutable borrow
});           // first borrow later used by call

Собственно, в детальном описании ошибки об этом и сказано )
источник

АМ

Александр Мещеряков... in Rust Beginners
Хотя, наверное, лучше даже вот так это понять:

A::test(&mut a, A::test(&mut a, 1));


Первый аргумент вычислился и сохранился, затем идет вычисление второго аргумента - и все ломается.
источник

АМ

Александр Мещеряков... in Rust Beginners
Двухфазное заимствование несколько решает эту проблему, но только для случая, когда вложенные заимствования иммутабельные: https://github.com/rust-lang/rfcs/blob/master/text/2025-nested-method-calls.md
источник

A

Adatan in Rust Beginners
Как можно безопасно шарить инстанс соединения с БД (tokio-postgres) в коде?
источник

A

Adatan in Rust Beginners
(как новичек, я бы вынес через once_cell и mutex в глобальную переменную)
источник