尝试通过 cargo fix 更新版本时找不到本地 crate

Local crate not found when trying to update edition via cargo fix

上下文:
我有一个名为 'libmaths' 的本地 C 库,然后使用 Bindgen 创建一个 'libmaths-sys' 箱子,该箱子本地存储在与我的项目相同的目录中。

问题:
我想使用 2021 版 Rust 中的一些功能,目前我的项目是在 2018 年构建的。我正在尝试按照以下说明更新项目:

https://doc.rust-lang.org/cargo/commands/cargo-fix.html

Run cargo fix --edition. Consider also using the --all-features flag if your project has multiple features. You may also want to run cargo fix --edition multiple times with different --target flags if your project has platform-specific code gated by cfg attributes.

Modify Cargo.toml to set the edition field to the new edition.

Run your project tests to verify that everything still works. If new warnings are issued, you may want to consider running cargo fix again (without the --edition flag) to apply any suggestions given by the compiler.

To 运行 cargo fix --edition 编译器告诉我删除 cargo toml 中的 edition="2018"。在此之后,我收到一个编译错误,指出无法找到 libmaths-sys。代码在2018年编译执行正常,但不是没有这个版本标签。

我找不到有类似问题的人,这是我的第一个 Whosebug 问题,所以不确定如何最好地显示我的代码,因为它是一个小项目的上下文。

错误代码

error[E0432]: unresolved import `libmaths_sys`

 --> src/main.rs:1:5
  |
1 | use libmaths_sys::*; // lib.rs in sys crate
  |     ^^^^^^^^^^^^ maybe a missing crate `libmaths_sys`?

项目的文件结构和总体概述

.
├── Cargo.lock
├── Cargo.toml
├── libmaths
│   ├── add.c
│   ├── add.h
│   └── subtract.c
├── libmaths-sys
│   ├── build.rs
│   ├── Cargo.lock
│   ├── Cargo.toml
│   ├── src
│   │   └── lib.rs
│   └── wrapper.h
├── README.md
└── src
    ├── lib.rs
    └── main.rs

libmaths 包含 add.c returns a + b 和 subtract.c 其中 returns a - b,header add.h 指向到两个 .c 文件

bindgen 生成的 Rust 代码通过 lib.rs 附加在 libmath-sys 箱子中,它链接到我从树中省略的 OUT DIR 以保存 200 行文件名。

尝试将 edition="2018" 更新为 edition="2021";否则 it defaults to edition="2015" which requires usage of extern crate.

正如@Solomon Ucko 指导我的那样,rustup 更新是关键。

Running rustup update produced:
info: syncing channel updates for 'stable-x86_64-unknown-linux-gnu'
info: syncing channel updates for '1.48-x86_64-unknown-linux-gnu'
info: checking for self-updates

  stable-x86_64-unknown-linux-gnu unchanged - rustc 1.59.0 (9d1b2106e 2022-02-23)
    1.48-x86_64-unknown-linux-gnu unchanged - rustc 1.48.0 (7eac88abb 2020-11-16)

info: cleaning up downloads & tmp directories

最后,rustup 使用的是旧的 1.48 版本,而不是安装的 1.59 版本。
要切换到较新的版本,我 运行:

rustup default stable

然后我可以按照原始问题中 link 的说明更改版本。