Skip to content

Commit 221cfac

Browse files
Urgaumichaelwoerister
authored andcommitted
Improve continuous integration checks (rustfmt, rustdoc, clippy)
1 parent 3805516 commit 221cfac

File tree

5 files changed

+66
-44
lines changed

5 files changed

+66
-44
lines changed

.github/workflows/rust.yml

Lines changed: 39 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -22,30 +22,52 @@ jobs:
2222
runs-on: ${{ matrix.os }}-latest
2323
timeout-minutes: 30
2424
steps:
25-
- uses: actions/checkout@v4
26-
- run: rustup default stable
27-
- run: cargo check
28-
- run: cargo test
29-
- run: rustup default nightly
30-
- run: cargo test --all-features
25+
- uses: actions/checkout@v4
26+
- run: rustup default stable
27+
- run: cargo check
28+
- run: cargo test
29+
- run: rustup default nightly
30+
- run: cargo test --all-features
3131
cross-test:
3232
strategy:
3333
matrix:
3434
target: [
35-
"x86_64-unknown-linux-gnu", # 64-bits, little-endian
36-
"i686-unknown-linux-gnu", # 32-bits, little-endian
37-
"mips-unknown-linux-gnu", # 32-bits, big-endian
38-
"mips64-unknown-linux-gnuabi64" # 64-bits, big-endian
39-
]
35+
"x86_64-unknown-linux-gnu", # 64-bits, little-endian
36+
"i686-unknown-linux-gnu", # 32-bits, little-endian
37+
"mips-unknown-linux-gnu", # 32-bits, big-endian
38+
"mips64-unknown-linux-gnuabi64", # 64-bits, big-endian
39+
]
4040
runs-on: ubuntu-latest
4141
timeout-minutes: 30
4242
steps:
43-
- uses: actions/checkout@v4
44-
- name: install miri
45-
run: rustup toolchain add nightly --no-self-update --component miri && rustup default nightly
46-
- run: |
47-
cargo miri test --target=${{ matrix.target }} --all-features
48-
env:
43+
- uses: actions/checkout@v4
44+
- name: install miri
45+
run: rustup toolchain add nightly --no-self-update --component miri && rustup default nightly
46+
- run: |
47+
cargo miri test --target=${{ matrix.target }} --all-features
48+
env:
4949
MIRIFLAGS: -Zmiri-strict-provenance
5050
RUSTDOCFLAGS: ${{ env.RUSTDOCFLAGS }} -Z randomize-layout
5151
RUSTFLAGS: ${{ env.RUSTFLAGS }} -Z randomize-layout
52+
fmt:
53+
runs-on: ubuntu-latest
54+
steps:
55+
- uses: actions/checkout@v4
56+
- run: rustup update stable && rustup default stable
57+
- run: rustup component add rustfmt
58+
- run: cargo fmt --all --check
59+
docs:
60+
runs-on: ubuntu-latest
61+
steps:
62+
- uses: actions/checkout@v4
63+
- run: rustup update stable && rustup default stable
64+
- run: cargo doc --workspace --document-private-items --no-deps
65+
env:
66+
RUSTDOCFLAGS: -D warnings
67+
clippy:
68+
runs-on: ubuntu-latest
69+
steps:
70+
- uses: actions/checkout@v4
71+
- run: rustup update stable && rustup default stable
72+
- run: rustup component add clippy
73+
- run: cargo clippy --workspace --all-targets --no-deps

src/lib.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
//! A stable hashing algorithm used by rustc
22
33
#![cfg_attr(feature = "nightly", feature(hasher_prefixfree_extras))]
4+
#![deny(clippy::missing_safety_doc)]
5+
#![deny(unsafe_op_in_unsafe_fn)]
46

57
mod int_overflow;
68
mod sip128;

src/sip128.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -408,13 +408,13 @@ impl SipHasher128 {
408408

409409
state.v2 ^= 0xee;
410410
Sip13Rounds::d_rounds(&mut state);
411-
let _0 = state.v0 ^ state.v1 ^ state.v2 ^ state.v3;
411+
let l = state.v0 ^ state.v1 ^ state.v2 ^ state.v3;
412412

413413
state.v1 ^= 0xdd;
414414
Sip13Rounds::d_rounds(&mut state);
415-
let _1 = state.v0 ^ state.v1 ^ state.v2 ^ state.v3;
415+
let h = state.v0 ^ state.v1 ^ state.v2 ^ state.v3;
416416

417-
[_0, _1]
417+
[l, h]
418418
}
419419
}
420420

@@ -523,7 +523,7 @@ impl Hasher for SipHasher128 {
523523
}
524524

525525
fn finish(&self) -> u64 {
526-
let mut buf = self.buf.clone();
526+
let mut buf = self.buf;
527527
let [a, b] = unsafe {
528528
SipHasher128::finish128_inner(self.nbuf, &mut buf, self.state, self.processed)
529529
};

src/sip128/tests.rs

Lines changed: 21 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -98,25 +98,26 @@ fn test_siphash_1_3_test_vector() {
9898

9999
let mut input: Vec<u8> = Vec::new();
100100

101-
for i in 0..64 {
101+
#[allow(clippy::identity_op)]
102+
for (i, v) in TEST_VECTOR.iter().enumerate() {
102103
let out = hash_with(SipHasher128::new_with_keys(k0, k1), &Bytes(&input[..]));
103104
let expected = [
104-
((TEST_VECTOR[i][0] as u64) << 0)
105-
| ((TEST_VECTOR[i][1] as u64) << 8)
106-
| ((TEST_VECTOR[i][2] as u64) << 16)
107-
| ((TEST_VECTOR[i][3] as u64) << 24)
108-
| ((TEST_VECTOR[i][4] as u64) << 32)
109-
| ((TEST_VECTOR[i][5] as u64) << 40)
110-
| ((TEST_VECTOR[i][6] as u64) << 48)
111-
| ((TEST_VECTOR[i][7] as u64) << 56),
112-
((TEST_VECTOR[i][8] as u64) << 0)
113-
| ((TEST_VECTOR[i][9] as u64) << 8)
114-
| ((TEST_VECTOR[i][10] as u64) << 16)
115-
| ((TEST_VECTOR[i][11] as u64) << 24)
116-
| ((TEST_VECTOR[i][12] as u64) << 32)
117-
| ((TEST_VECTOR[i][13] as u64) << 40)
118-
| ((TEST_VECTOR[i][14] as u64) << 48)
119-
| ((TEST_VECTOR[i][15] as u64) << 56),
105+
((v[0] as u64) << 0)
106+
| ((v[1] as u64) << 8)
107+
| ((v[2] as u64) << 16)
108+
| ((v[3] as u64) << 24)
109+
| ((v[4] as u64) << 32)
110+
| ((v[5] as u64) << 40)
111+
| ((v[6] as u64) << 48)
112+
| ((v[7] as u64) << 56),
113+
((v[8] as u64) << 0)
114+
| ((v[9] as u64) << 8)
115+
| ((v[10] as u64) << 16)
116+
| ((v[11] as u64) << 24)
117+
| ((v[12] as u64) << 32)
118+
| ((v[13] as u64) << 40)
119+
| ((v[14] as u64) << 48)
120+
| ((v[15] as u64) << 56),
120121
];
121122

122123
assert_eq!(out.0, expected);
@@ -128,21 +129,21 @@ fn test_siphash_1_3_test_vector() {
128129
#[cfg(target_arch = "arm")]
129130
fn test_hash_usize() {
130131
let val = 0xdeadbeef_deadbeef_u64;
131-
assert!(hash(&(val as u64)) != hash(&(val as usize)));
132+
assert!(hash(&val) != hash(&(val as usize)));
132133
assert_eq!(hash(&(val as u32)), hash(&(val as usize)));
133134
}
134135
#[test]
135136
#[cfg(target_arch = "x86_64")]
136137
fn test_hash_usize() {
137138
let val = 0xdeadbeef_deadbeef_u64;
138-
assert_eq!(hash(&(val as u64)), hash(&(val as usize)));
139+
assert_eq!(hash(&val), hash(&(val as usize)));
139140
assert!(hash(&(val as u32)) != hash(&(val as usize)));
140141
}
141142
#[test]
142143
#[cfg(target_arch = "x86")]
143144
fn test_hash_usize() {
144145
let val = 0xdeadbeef_deadbeef_u64;
145-
assert!(hash(&(val as u64)) != hash(&(val as usize)));
146+
assert!(hash(&val) != hash(&(val as usize)));
146147
assert_eq!(hash(&(val as u32)), hash(&(val as usize)));
147148
}
148149

src/stable_hasher.rs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,6 @@ impl<H: ExtendedHasher + Default> StableHasher<H> {
125125
///
126126
/// To be used with the [`Hasher`] implementation and [`StableHasher::finish`].
127127
#[inline]
128-
#[must_use]
129128
pub fn new() -> Self {
130129
Default::default()
131130
}
@@ -136,7 +135,6 @@ impl<H: ExtendedHasher + Default> Default for StableHasher<H> {
136135
///
137136
/// To be used with the [`Hasher`] implementation and [`StableHasher::finish`].
138137
#[inline]
139-
#[must_use]
140138
fn default() -> Self {
141139
StableHasher {
142140
state: Default::default(),
@@ -153,7 +151,6 @@ impl<H: ExtendedHasher> StableHasher<H> {
153151
/// is not covered by this crate guarentees and will make the resulting hash
154152
/// NOT platform independent.
155153
#[inline]
156-
#[must_use]
157154
pub fn with_hasher(state: H) -> Self {
158155
StableHasher { state }
159156
}

0 commit comments

Comments
 (0)