mirror of
https://github.com/rust-lang/rustlings.git
synced 2026-06-30 00:08:45 +00:00
Merge branch 'rust-lang:main' into main
This commit is contained in:
commit
c51d25ad30
10
.github/workflows/rust.yml
vendored
10
.github/workflows/rust.yml
vendored
@ -21,13 +21,13 @@ jobs:
|
|||||||
clippy:
|
clippy:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v6
|
- uses: actions/checkout@v7
|
||||||
- name: Clippy
|
- name: Clippy
|
||||||
run: cargo clippy -- --deny warnings
|
run: cargo clippy -- --deny warnings
|
||||||
fmt:
|
fmt:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v6
|
- uses: actions/checkout@v7
|
||||||
- name: rustfmt
|
- name: rustfmt
|
||||||
run: cargo fmt --all --check
|
run: cargo fmt --all --check
|
||||||
test:
|
test:
|
||||||
@ -36,7 +36,7 @@ jobs:
|
|||||||
matrix:
|
matrix:
|
||||||
os: [ubuntu-latest, windows-latest, macos-latest]
|
os: [ubuntu-latest, windows-latest, macos-latest]
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v6
|
- uses: actions/checkout@v7
|
||||||
- uses: swatinem/rust-cache@v2
|
- uses: swatinem/rust-cache@v2
|
||||||
- name: cargo test
|
- name: cargo test
|
||||||
env:
|
env:
|
||||||
@ -45,12 +45,12 @@ jobs:
|
|||||||
dev-check:
|
dev-check:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v6
|
- uses: actions/checkout@v7
|
||||||
- uses: swatinem/rust-cache@v2
|
- uses: swatinem/rust-cache@v2
|
||||||
- name: rustlings dev check
|
- name: rustlings dev check
|
||||||
run: cargo dev check --require-solutions
|
run: cargo dev check --require-solutions
|
||||||
rumdl:
|
rumdl:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v6
|
- uses: actions/checkout@v7
|
||||||
- uses: rvben/rumdl@v0
|
- uses: rvben/rumdl@v0
|
||||||
|
|||||||
4
.github/workflows/website.yml
vendored
4
.github/workflows/website.yml
vendored
@ -12,7 +12,7 @@ jobs:
|
|||||||
rumdl:
|
rumdl:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v6
|
- uses: actions/checkout@v7
|
||||||
- uses: rvben/rumdl@v0
|
- uses: rvben/rumdl@v0
|
||||||
build:
|
build:
|
||||||
needs: rumdl
|
needs: rumdl
|
||||||
@ -21,7 +21,7 @@ jobs:
|
|||||||
working-directory: website
|
working-directory: website
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v6
|
- uses: actions/checkout@v7
|
||||||
- name: Install TailwindCSS
|
- name: Install TailwindCSS
|
||||||
run: npm install
|
run: npm install
|
||||||
- name: Build CSS
|
- name: Build CSS
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
// the form "<team_1_name>,<team_2_name>,<team_1_goals>,<team_2_goals>"
|
// the form "<team_1_name>,<team_2_name>,<team_1_goals>,<team_2_goals>"
|
||||||
// Example: "England,France,4,2" (England scored 4 goals, France 2).
|
// Example: "England,France,4,2" (England scored 4 goals, France 2).
|
||||||
//
|
//
|
||||||
// You have to build a scores table containing the name of the team, the total
|
// You have to build a table of scores containing the name of the team, the total
|
||||||
// number of goals the team scored, and the total number of goals the team
|
// number of goals the team scored, and the total number of goals the team
|
||||||
// conceded.
|
// conceded.
|
||||||
|
|
||||||
@ -15,19 +15,19 @@ struct TeamScores {
|
|||||||
goals_conceded: u8,
|
goals_conceded: u8,
|
||||||
}
|
}
|
||||||
|
|
||||||
fn build_scores_table(results: &str) -> HashMap<&str, TeamScores> {
|
fn build_score_table(results: &str) -> HashMap<&str, TeamScores> {
|
||||||
// The name of the team is the key and its associated struct is the value.
|
// The name of the team is the key and its associated struct is the value.
|
||||||
let mut scores = HashMap::<&str, TeamScores>::new();
|
let mut scores = HashMap::<&str, TeamScores>::new();
|
||||||
|
|
||||||
for line in results.lines() {
|
for line in results.lines() {
|
||||||
let mut split_iterator = line.split(',');
|
let mut split_iterator = line.split(',');
|
||||||
// NOTE: We use `unwrap` because we didn't deal with error handling yet.
|
// NOTE: We use `unwrap` because we haven't dealt with error handling yet.
|
||||||
let team_1_name = split_iterator.next().unwrap();
|
let team_1_name = split_iterator.next().unwrap();
|
||||||
let team_2_name = split_iterator.next().unwrap();
|
let team_2_name = split_iterator.next().unwrap();
|
||||||
let team_1_score: u8 = split_iterator.next().unwrap().parse().unwrap();
|
let team_1_score: u8 = split_iterator.next().unwrap().parse().unwrap();
|
||||||
let team_2_score: u8 = split_iterator.next().unwrap().parse().unwrap();
|
let team_2_score: u8 = split_iterator.next().unwrap().parse().unwrap();
|
||||||
|
|
||||||
// TODO: Populate the scores table with the extracted details.
|
// TODO: Populate the score table with the extracted details.
|
||||||
// Keep in mind that goals scored by team 1 will be the number of goals
|
// Keep in mind that goals scored by team 1 will be the number of goals
|
||||||
// conceded by team 2. Similarly, goals scored by team 2 will be the
|
// conceded by team 2. Similarly, goals scored by team 2 will be the
|
||||||
// number of goals conceded by team 1.
|
// number of goals conceded by team 1.
|
||||||
@ -52,7 +52,7 @@ England,Spain,1,0";
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn build_scores() {
|
fn build_scores() {
|
||||||
let scores = build_scores_table(RESULTS);
|
let scores = build_score_table(RESULTS);
|
||||||
|
|
||||||
assert!(["England", "France", "Germany", "Italy", "Poland", "Spain"]
|
assert!(["England", "France", "Germany", "Italy", "Poland", "Spain"]
|
||||||
.into_iter()
|
.into_iter()
|
||||||
@ -61,7 +61,7 @@ England,Spain,1,0";
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn validate_team_score_1() {
|
fn validate_team_score_1() {
|
||||||
let scores = build_scores_table(RESULTS);
|
let scores = build_score_table(RESULTS);
|
||||||
let team = scores.get("England").unwrap();
|
let team = scores.get("England").unwrap();
|
||||||
assert_eq!(team.goals_scored, 6);
|
assert_eq!(team.goals_scored, 6);
|
||||||
assert_eq!(team.goals_conceded, 4);
|
assert_eq!(team.goals_conceded, 4);
|
||||||
@ -69,7 +69,7 @@ England,Spain,1,0";
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn validate_team_score_2() {
|
fn validate_team_score_2() {
|
||||||
let scores = build_scores_table(RESULTS);
|
let scores = build_score_table(RESULTS);
|
||||||
let team = scores.get("Spain").unwrap();
|
let team = scores.get("Spain").unwrap();
|
||||||
assert_eq!(team.goals_scored, 0);
|
assert_eq!(team.goals_scored, 0);
|
||||||
assert_eq!(team.goals_conceded, 3);
|
assert_eq!(team.goals_conceded, 3);
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
// the form "<team_1_name>,<team_2_name>,<team_1_goals>,<team_2_goals>"
|
// the form "<team_1_name>,<team_2_name>,<team_1_goals>,<team_2_goals>"
|
||||||
// Example: "England,France,4,2" (England scored 4 goals, France 2).
|
// Example: "England,France,4,2" (England scored 4 goals, France 2).
|
||||||
//
|
//
|
||||||
// You have to build a scores table containing the name of the team, the total
|
// You have to build a table of scores containing the name of the team, the total
|
||||||
// number of goals the team scored, and the total number of goals the team
|
// number of goals the team scored, and the total number of goals the team
|
||||||
// conceded.
|
// conceded.
|
||||||
|
|
||||||
@ -15,13 +15,13 @@ struct TeamScores {
|
|||||||
goals_conceded: u8,
|
goals_conceded: u8,
|
||||||
}
|
}
|
||||||
|
|
||||||
fn build_scores_table(results: &str) -> HashMap<&str, TeamScores> {
|
fn build_score_table(results: &str) -> HashMap<&str, TeamScores> {
|
||||||
// The name of the team is the key and its associated struct is the value.
|
// The name of the team is the key and its associated struct is the value.
|
||||||
let mut scores = HashMap::<&str, TeamScores>::new();
|
let mut scores = HashMap::<&str, TeamScores>::new();
|
||||||
|
|
||||||
for line in results.lines() {
|
for line in results.lines() {
|
||||||
let mut split_iterator = line.split(',');
|
let mut split_iterator = line.split(',');
|
||||||
// NOTE: We use `unwrap` because we didn't deal with error handling yet.
|
// NOTE: We use `unwrap` because we haven't dealt with error handling yet.
|
||||||
let team_1_name = split_iterator.next().unwrap();
|
let team_1_name = split_iterator.next().unwrap();
|
||||||
let team_2_name = split_iterator.next().unwrap();
|
let team_2_name = split_iterator.next().unwrap();
|
||||||
let team_1_score: u8 = split_iterator.next().unwrap().parse().unwrap();
|
let team_1_score: u8 = split_iterator.next().unwrap().parse().unwrap();
|
||||||
@ -58,7 +58,7 @@ England,Spain,1,0";
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn build_scores() {
|
fn build_scores() {
|
||||||
let scores = build_scores_table(RESULTS);
|
let scores = build_score_table(RESULTS);
|
||||||
|
|
||||||
assert!(
|
assert!(
|
||||||
["England", "France", "Germany", "Italy", "Poland", "Spain"]
|
["England", "France", "Germany", "Italy", "Poland", "Spain"]
|
||||||
@ -69,7 +69,7 @@ England,Spain,1,0";
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn validate_team_score_1() {
|
fn validate_team_score_1() {
|
||||||
let scores = build_scores_table(RESULTS);
|
let scores = build_score_table(RESULTS);
|
||||||
let team = scores.get("England").unwrap();
|
let team = scores.get("England").unwrap();
|
||||||
assert_eq!(team.goals_scored, 6);
|
assert_eq!(team.goals_scored, 6);
|
||||||
assert_eq!(team.goals_conceded, 4);
|
assert_eq!(team.goals_conceded, 4);
|
||||||
@ -77,7 +77,7 @@ England,Spain,1,0";
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn validate_team_score_2() {
|
fn validate_team_score_2() {
|
||||||
let scores = build_scores_table(RESULTS);
|
let scores = build_score_table(RESULTS);
|
||||||
let team = scores.get("Spain").unwrap();
|
let team = scores.get("Spain").unwrap();
|
||||||
assert_eq!(team.goals_scored, 0);
|
assert_eq!(team.goals_scored, 0);
|
||||||
assert_eq!(team.goals_conceded, 3);
|
assert_eq!(team.goals_conceded, 3);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user