diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 17dfd1d..ead57f3 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -72,10 +72,13 @@ jobs: cargo +stable update - uses: taiki-e/install-action@v2 with: - tool: cargo-hack,cargo-nextest + tool: cargo-hack,cargo-nextest,cargo-minimal-versions - name: Test (${{ matrix.rust }}, ${{ matrix.feature_flags }}}) run: | cargo hack ${{ matrix.feature_flags }} nextest run --no-tests=pass + - name: Check -Zminimal-versions (${{ matrix.rust }}, ${{ matrix.feature_flags }}}) + run: | + cargo hack ${{ matrix.feature_flags }} minimal-versions check clippy: # Only run on PRs if the source branch is on someone else's repo diff --git a/Cargo.toml b/Cargo.toml index 8738bcc..ae8d9bf 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -24,6 +24,10 @@ intid-derive = { path = "intid-derive", version = "0.3.2" } intid-core = { path = "intid-core", version = "0.3.2"} intid = { path = "intid", version = "0.3.2" } +# bytemuck 1.14 - adds `align_offset` feature +# bytemuck 1.19 - adds `track_caller` feature +bytemuck = "1.19" + [workspace.lints.rust] missing-docs = "deny" unsafe-op-in-unsafe-fn = "deny" diff --git a/intid-allocator/Cargo.toml b/intid-allocator/Cargo.toml index 731dce6..28f3c14 100644 --- a/intid-allocator/Cargo.toml +++ b/intid-allocator/Cargo.toml @@ -25,7 +25,7 @@ keywords = [ [dependencies] atomic = { version = "0.6", optional = true } -bytemuck = { version = "1", optional = true } +bytemuck = { workspace = true, optional = true } rustversion = "1" [dependencies.intid] diff --git a/intid-core/Cargo.toml b/intid-core/Cargo.toml index 25197dd..86d1745 100644 --- a/intid-core/Cargo.toml +++ b/intid-core/Cargo.toml @@ -14,7 +14,7 @@ keywords = ["intid", "id", "counter", "idmap", "integer"] [dependencies] num-traits = { version = "0.2", optional = true } nonmax = { version = "0.5", optional = true } -bytemuck = { version = "1", optional = true } +bytemuck = { workspace = true, optional = true } [features] default = ["std"] diff --git a/intid-derive/src/analyze.rs b/intid-derive/src/analyze.rs index 99e24a3..8447022 100644 --- a/intid-derive/src/analyze.rs +++ b/intid-derive/src/analyze.rs @@ -331,7 +331,8 @@ pub fn determine_repr(input: &DeriveInput) -> Result, syn::Error> { if result.is_some() { return Err(meta.error("Encountered multiple repr(...) attributes")); } - let ident = meta.path.require_ident()?; + let unknown_repr = || syn::Error::new(meta.path.span(), "Unknown #[repr])"); + let ident = meta.path.get_ident().ok_or_else(unknown_repr)?; let s = ident.to_string(); result = Some(match &*s { "C" => Repr::C(ident.span()), @@ -343,7 +344,7 @@ pub fn determine_repr(input: &DeriveInput) -> Result, syn::Error> { ..int }) } - _ => return Err(syn::Error::new(meta.path.span(), "Unknown #[repr])")), + _ => return Err(unknown_repr()), }); Ok(()) })?;