Size: a a a

2020 October 15

IK

Ilya Kmet in Rust Beginners
источник

M

Maxim Bogdanov in Rust Beginners
Спасибо
источник

DN

Denis Nevmerzhitskii in Rust Beginners
Привет! Возможно ли как-нибудь реализовать wrapper? foo не моя, из библиотеки. https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=f0c7d1349d9658da886df2d3a6b214a4
источник

АГ

Алексей Герасимов... in Rust Beginners
George
Можете объяснить, какие мне нужны лайфтаймы(или какое решение тут должно быть) и главное почему? Я (наверное) понимаю, что коннекшен должен переживать отданный с его помощью результат, но не понимаю, как это обозначить извне.
приведи ошибку компилтора, там обозначаются скоупы и кто кого должен пережить
источник

АГ

Алексей Герасимов... in Rust Beginners
и еще, у тебя лайфтайм а не используется, какова его роль?
источник

G

George in Rust Beginners
Алексей Герасимов
и еще, у тебя лайфтайм а не используется, какова его роль?
Он и правда не нужен, хватает анонимного О_о

ошибка многого не даёт
источник

АГ

Алексей Герасимов... in Rust Beginners
George
Он и правда не нужен, хватает анонимного О_о

ошибка многого не даёт
это вся ошибка? что он подразумевает под лайфтаймом ’2?
источник

G

George in Rust Beginners
Алексей Герасимов
это вся ошибка? что он подразумевает под лайфтаймом ’2?
Видимо 'f у результата из .transaction(), потому что 'c у коннекшена => 'c == '1
источник

АГ

Алексей Герасимов... in Rust Beginners
George
Видимо 'f у результата из .transaction(), потому что 'c у коннекшена => 'c == '1
он должен явно написать, это точно вся ошибка?
источник

G

George in Rust Beginners
Алексей Герасимов
он должен явно написать, это точно вся ошибка?
Прямо из консоли билда.

C:/Users/gosha/.cargo/bin/cargo.exe build --package app_actix --bin app_actix --color=always --verbose

error: lifetime may not live long enough
 --> src\entities\users\service.rs:41:9
  |
41 |         async move |x| -> AResult<User>
  |         ^^^^^^^^^^^^-^^^^^^^^^^^^^^^^^-
  |         |           |                 |
  |         |           |                 return type of closure is impl futures::Future
  |         |           has type `&'1 mut sqlx::PgConnection`
  |         returning this value requires that `'1` must outlive `'2`

error: aborting due to previous error; 1 warning emitted
источник

E

Eugene in Rust Beginners
George
Прямо из консоли билда.

C:/Users/gosha/.cargo/bin/cargo.exe build --package app_actix --bin app_actix --color=always --verbose

error: lifetime may not live long enough
 --> src\entities\users\service.rs:41:9
  |
41 |         async move |x| -> AResult<User>
  |         ^^^^^^^^^^^^-^^^^^^^^^^^^^^^^^-
  |         |           |                 |
  |         |           |                 return type of closure is impl futures::Future
  |         |           has type `&'1 mut sqlx::PgConnection`
  |         returning this value requires that `'1` must outlive `'2`

error: aborting due to previous error; 1 warning emitted
'2 на что указывает?
источник

G

George in Rust Beginners
если копировать код изнутри функции '.transaction' и вынести отдельно вот в таком формате (сделать тоже самое, но вручную по факту), то ошибка подписывает первый лайфтайм, но не второй
источник

E

Eugene in Rust Beginners
George
если копировать код изнутри функции '.transaction' и вынести отдельно вот в таком формате (сделать тоже самое, но вручную по факту), то ошибка подписывает первый лайфтайм, но не второй
а что внутри того closure, который подчёркнутый красным?
источник

G

George in Rust Beginners
Eugene
а что внутри того closure, который подчёркнутый красным?
на скриншоте выше видно. два sql запроса. сейчас перепришлю
источник

G

George in Rust Beginners
Внутренности transaction целиком
источник

G

George in Rust Beginners
и если просто скопировать внутренности транзакции внутрь моей функции. ошибка останется той же и указывает теперь однозначно на саму кложуру
источник

E

Eugene in Rust Beginners
George
и если просто скопировать внутренности транзакции внутрь моей функции. ошибка останется той же и указывает теперь однозначно на саму кложуру
move пробовали убирать после async?
источник

G

George in Rust Beginners
Eugene
move пробовали убирать после async?
угу

`async` non-`move` closures with parameters are not currently supported E0708 Help: consider using `let` statements to manually capture variables by reference before entering an `async move` closure
источник

E

Eugene in Rust Beginners
George
угу

`async` non-`move` closures with parameters are not currently supported E0708 Help: consider using `let` statements to manually capture variables by reference before entering an `async move` closure
а если вместо того, чтобы перемещать ссылку, может переместить копию?
источник

G

George in Rust Beginners
Eugene
а если вместо того, чтобы перемещать ссылку, может переместить копию?
Коннекшены нельзя копировать. Они не Clone и не Copy.
источник