Skip to content

Commit bbf02fa

Browse files
committed
ci: add GitHub Actions workflow and fix clippy warnings
Add CI workflow with format, clippy, test, MSRV, and docs jobs. Fix collapsible if statements in milestones example using let-chains.
1 parent 5239207 commit bbf02fa

File tree

2 files changed

+82
-20
lines changed

2 files changed

+82
-20
lines changed

.github/workflows/ci.yml

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
name: CI
2+
3+
on:
4+
push:
5+
branches: [main]
6+
pull_request:
7+
branches: [main]
8+
9+
env:
10+
CARGO_TERM_COLOR: always
11+
12+
jobs:
13+
fmt:
14+
name: Format
15+
runs-on: ubuntu-latest
16+
steps:
17+
- uses: actions/checkout@v4
18+
- uses: dtolnay/rust-toolchain@stable
19+
with:
20+
components: rustfmt
21+
- run: cargo fmt --all --check
22+
23+
clippy:
24+
name: Clippy
25+
runs-on: ubuntu-latest
26+
steps:
27+
- uses: actions/checkout@v4
28+
- uses: dtolnay/rust-toolchain@stable
29+
with:
30+
components: clippy
31+
- uses: Swatinem/rust-cache@v2
32+
- run: cargo clippy --all-targets -- -D warnings
33+
34+
test:
35+
name: Test
36+
runs-on: ubuntu-latest
37+
steps:
38+
- uses: actions/checkout@v4
39+
- uses: dtolnay/rust-toolchain@stable
40+
- uses: Swatinem/rust-cache@v2
41+
- run: cargo test
42+
43+
msrv:
44+
name: MSRV (1.92)
45+
runs-on: ubuntu-latest
46+
steps:
47+
- uses: actions/checkout@v4
48+
- uses: dtolnay/rust-toolchain@master
49+
with:
50+
toolchain: "1.92"
51+
- uses: Swatinem/rust-cache@v2
52+
- run: cargo build --all-targets
53+
54+
docs:
55+
name: Docs
56+
runs-on: ubuntu-latest
57+
steps:
58+
- uses: actions/checkout@v4
59+
- uses: dtolnay/rust-toolchain@stable
60+
- uses: Swatinem/rust-cache@v2
61+
- run: cargo doc --no-deps
62+
env:
63+
RUSTDOCFLAGS: -D warnings

examples/milestones.rs

Lines changed: 19 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -51,10 +51,10 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
5151
if let Some(start) = &milestone.start_date {
5252
println!(" Start: {}", start);
5353
}
54-
if let Some(tickers) = &milestone.primary_event_tickers {
55-
if !tickers.is_empty() {
56-
println!(" Events: {}", tickers.join(", "));
57-
}
54+
if let Some(tickers) = &milestone.primary_event_tickers
55+
&& !tickers.is_empty()
56+
{
57+
println!(" Events: {}", tickers.join(", "));
5858
}
5959
println!();
6060
}
@@ -118,27 +118,26 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
118118
if let Some(end) = &milestone.end_date {
119119
println!(" End: {}", end);
120120
}
121-
if let Some(tickers) = &milestone.primary_event_tickers {
122-
if !tickers.is_empty() {
123-
println!(" Primary Events: {}", tickers.join(", "));
124-
}
121+
if let Some(tickers) = &milestone.primary_event_tickers
122+
&& !tickers.is_empty()
123+
{
124+
println!(" Primary Events: {}", tickers.join(", "));
125125
}
126-
if let Some(tickers) = &milestone.related_event_tickers {
127-
if !tickers.is_empty() {
128-
println!(" Related Events: {}", tickers.join(", "));
129-
}
126+
if let Some(tickers) = &milestone.related_event_tickers
127+
&& !tickers.is_empty()
128+
{
129+
println!(" Related Events: {}", tickers.join(", "));
130130
}
131131
if let Some(updated) = &milestone.last_updated_ts {
132132
println!(" Updated: {}", updated);
133133
}
134-
if let Some(details) = &milestone.details {
135-
if let Some(obj) = details.as_object() {
136-
if !obj.is_empty() {
137-
println!(" Details: {} fields", obj.len());
138-
for (key, value) in obj.iter().take(5) {
139-
println!(" {}: {}", key, value);
140-
}
141-
}
134+
if let Some(details) = &milestone.details
135+
&& let Some(obj) = details.as_object()
136+
&& !obj.is_empty()
137+
{
138+
println!(" Details: {} fields", obj.len());
139+
for (key, value) in obj.iter().take(5) {
140+
println!(" {}: {}", key, value);
142141
}
143142
}
144143
}

0 commit comments

Comments
 (0)