diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 071df1ef7b..c4c02f44d3 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -48,22 +48,19 @@ jobs: msrv: runs-on: ubuntu-latest strategy: - matrix: - signing: ["", "--features signing"] + matrix: + features: ["", "--features serde,tokio-1", "--features signing"] steps: - uses: actions/checkout@master + - name: Get MSRV from Cargo.toml + run: | + MSRV=$(grep 'rust-version' Cargo.toml | sed 's/.*= *"\(.*\)".*/\1/') + echo "MSRV=$MSRV" >> $GITHUB_ENV - uses: dtolnay/rust-toolchain@master with: - toolchain: 1.65.0 - - uses: actions-rs/cargo@v1 - with: - command: install - args: cross --locked - - uses: actions-rs/cargo@v1 - with: - use-cross: true - command: check - args: --all --all-targets ${{ matrix.signing }} + toolchain: ${{ env.MSRV }} + - uses: taiki-e/install-action@cargo-no-dev-deps + - run: cargo no-dev-deps check --all --all-targets ${{ matrix.features }} build: needs: [formatting, linting, internal-tests, mavlink-dump, msrv] diff --git a/Cargo.toml b/Cargo.toml index 509312c49c..71ebeb23ac 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -11,3 +11,4 @@ byteorder = { version = "1.3.4", default-features = false } [workspace.package] edition = "2021" +rust-version = "1.70.0" diff --git a/mavlink-bindgen/Cargo.toml b/mavlink-bindgen/Cargo.toml index d885ef9990..2c23aeefaa 100644 --- a/mavlink-bindgen/Cargo.toml +++ b/mavlink-bindgen/Cargo.toml @@ -6,6 +6,7 @@ license = "MIT/Apache-2.0" description = "Library used by rust-mavlink." readme = "README.md" repository = "https://github.com/mavlink/rust-mavlink" +rust-version.workspace = true # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html diff --git a/mavlink-bindgen/src/parser.rs b/mavlink-bindgen/src/parser.rs index eb4c2d6957..447367e129 100644 --- a/mavlink-bindgen/src/parser.rs +++ b/mavlink-bindgen/src/parser.rs @@ -365,7 +365,7 @@ impl MavEnum { #[cfg(feature = "emit-description")] let description = if let Some(description) = self.description.as_ref() { - let desc = format!("{description}"); + let desc = description.to_string(); quote!(#[doc = #desc]) } else { quote!() @@ -1001,7 +1001,7 @@ pub enum MavXmlElement { Extensions, } -fn identify_element(s: &[u8]) -> Option { +const fn identify_element(s: &[u8]) -> Option { use self::MavXmlElement::*; match s { b"version" => Some(Version), @@ -1066,7 +1066,7 @@ pub fn parse_profile( let mut events: Vec> = Vec::new(); let file = File::open(&in_path).map_err(|e| BindGenError::CouldNotReadDefinitionFile { source: e, - path: in_path.to_path_buf(), + path: in_path.clone(), })?; let mut reader = Reader::from_reader(BufReader::new(file)); reader.config_mut().trim_text(true); @@ -1088,14 +1088,11 @@ pub fn parse_profile( for e in events { match e { Ok(Event::Start(bytes)) => { - let id = match identify_element(bytes.name().into_inner()) { - None => { - panic!( - "unexpected element {:?}", - String::from_utf8_lossy(bytes.name().into_inner()) - ); - } - Some(kind) => kind, + let Some(id) = identify_element(bytes.name().into_inner()) else { + panic!( + "unexpected element {:?}", + String::from_utf8_lossy(bytes.name().into_inner()) + ); }; assert!( @@ -1109,20 +1106,20 @@ pub fn parse_profile( is_in_extension = true; } MavXmlElement::Message => { - message = Default::default(); + message = MavMessage::default(); } MavXmlElement::Field => { - field = Default::default(); + field = MavField::default(); field.is_extension = is_in_extension; } MavXmlElement::Enum => { - mavenum = Default::default(); + mavenum = MavEnum::default(); } MavXmlElement::Entry => { - entry = Default::default(); + entry = MavEnumEntry::default(); } MavXmlElement::Include => { - include = Default::default(); + include = PathBuf::default(); } MavXmlElement::Param => { paramid = None; @@ -1237,7 +1234,7 @@ pub fn parse_profile( if entry.params.is_none() { entry.params = Some(vec![]); } - if let b"index" = attr.key.into_inner() { + if attr.key.into_inner() == b"index" { let s = std::str::from_utf8(&attr.value).unwrap(); paramid = Some(s.parse::().unwrap()); } @@ -1251,7 +1248,7 @@ pub fn parse_profile( is_in_extension = true; } b"entry" => { - entry = Default::default(); + entry = MavEnumEntry::default(); for attr in bytes.attributes() { let attr = attr.unwrap(); match attr.key.into_inner() { @@ -1311,7 +1308,7 @@ pub fn parse_profile( eprintln!("TODO: deprecated {s:?}"); } data => { - panic!("unexpected text data {:?} reading {:?}", data, s); + panic!("unexpected text data {data:?} reading {s:?}"); } } } @@ -1489,7 +1486,7 @@ impl MavXmlFilter { } !self.extension_filter.is_in } - Err(error) => panic!("Failed to filter XML: {}", error), + Err(error) => panic!("Failed to filter XML: {error}"), } } } diff --git a/mavlink-core/Cargo.toml b/mavlink-core/Cargo.toml index d276b2c44e..64a20c938d 100644 --- a/mavlink-core/Cargo.toml +++ b/mavlink-core/Cargo.toml @@ -14,7 +14,7 @@ readme = "../README.md" license = "MIT/Apache-2.0" repository = "https://github.com/mavlink/rust-mavlink" edition.workspace = true -rust-version = "1.65.0" +rust-version.workspace = true [dependencies] crc-any = { workspace = true, default-features = false } diff --git a/mavlink/Cargo.toml b/mavlink/Cargo.toml index 0573047572..3a260320ee 100644 --- a/mavlink/Cargo.toml +++ b/mavlink/Cargo.toml @@ -16,7 +16,7 @@ readme = "../README.md" license = "MIT/Apache-2.0" repository = "https://github.com/mavlink/rust-mavlink" edition.workspace = true -rust-version = "1.65.0" +rust-version.workspace = true [build-dependencies] mavlink-bindgen = { path = "../mavlink-bindgen", default-features = false }