Ответы пользователя по тегу Rust
  • Как исправить "cannot infer an appropriate lifetime for lifetime parameter"?

    @Asapin
    В свободное время ковыряюсь с Rust и Wasm
    У самого опыта работы с растом не так много, но насколько я понимаю, ситуация получается следующая:
    1. Метод fn get_file(&self) возвращает Box
    2. Так как у возвращаемого типа Box нет явного ограничения лайфтайма, то согласно RFC 599, ему присваивается лайфтайм 'static
    3. Но при этом имплементация трейта File для структуры F ограничена лайфтаймом 'a, отсюда и конфликт.

    Возможное решение:
    Объект, который должен шериться между другими объектами (в моём примере это WrappedKey) заворачиваем сначала в Box, что бы переместить его из стека в кучу, а затем в Rc, что бы объект не умирал пока на него есть хоть одна ссылка.
    Когда надо создать копию ссылки на объект (что бы пошарить этот объект), просто вызываете clone() у Rc.

    Если объект надо шарить между разными потоками, то вместо Rcиспользуйте Arc(Atomic RC).
    Ответ написан
    Комментировать