не удается назначить «self.input.cached_token», потому что он заимствован

#rust #rust-cargo

Вопрос:

Я пытаюсь использовать ящик google-somethin = "0.1.4" , вот мой груз.томл

 [package] name = "test_json" version = "0.1.0" edition = "2018"  # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html  [dependencies] google-somethin = "0.1.4" openssl = { version = "0.10", features = ["vendored"] }  

При попытке сборки у меня возникает следующая ошибка

 cannot assign to `self.input.cached_token` because it is borrowed  --gt; /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/cssparser-0.24.1/src/parser.rs:572:17  | 547 | pub fn next_including_whitespace_and_comments(amp;mut self) -gt; Resultlt;amp;Tokenlt;'igt;, BasicParseErrorlt;'igt;gt; {  | - let's call the lifetime of this reference `'1` ... 560 | Some(ref cached_token)  | ---------------- borrow of `self.input.cached_token` occurs here ... 572 | self.input.cached_token = Some(CachedToken {  | ^^^^^^^^^^^^^^^^^^^^^^^ assignment to borrowed `self.input.cached_token` occurs here ... 584 | Ok(token)  | --------- returning this value requires that `self.input.cached_token.0` is borrowed for `'1`  error: aborting due to previous error  For more information about this error, try `rustc --explain E0506`. error: could not compile `cssparser`  To learn more, run the command again with --verbose.  

У меня есть эта ошибка, когда Compiling cssparser v0.24.1

Комментарии:

1. Какова ваша версия rustc? Возможно, у вас была версия до того, как время жизни было каким-то образом смягчено, чтобы позволить этому коду компилироваться.

2. Спасибо за ответ , моя версия-rustup 1.24.3 (ce5817a94 2021-05-31)

3.Я могу воссоздать эту ошибку с rustc 1.57.0-nightly (5b210643e 2021-10-11) помощью . Но cssparser 0.24.1 это не последняя версия. Он втягивается scraper 0.8.2 , что также не является последней версией, но , в свою очередь, он втягивается google-somethin 0.1.4 , что является последней версией. Я думаю, что если google-somethin бы обновили их scraper зависимость, это было бы исправлено, хотя я не уверен, почему она даже не работает в старой версии библиотеки, интересно, происходит ли это с предыдущими версиями компилятора или это недавняя регрессия?

4. Еще раз спасибо , теперь я понимаю причину проблемы , есть ли какое-либо решение для обновления зависимости от скребка, чтобы я мог использовать google-что-то?

5. Я не верю в это, google-somethin использует scraper = ^0.8.1 , что , я думаю, ограничивает его максимум 0.8.* , ниже 0.12 последней версии. Вам придется раскошелиться google-somethin , чтобы изменить его зависимости и исправить любые последствия обновлений.