aboutsummaryrefslogtreecommitdiff
path: root/rust/high-scores/src
diff options
context:
space:
mode:
authorFederico Igne <git@federicoigne.com>2020-12-26 17:48:38 +0000
committerFederico Igne <git@federicoigne.com>2021-11-03 18:55:08 +0000
commit02481656966b0a8dfc95cf3c22bcc049660ff7d4 (patch)
tree8e39798fcaf27931d91c2088423fd4e97adcfc2d /rust/high-scores/src
parent4e2052c4d792540c2f742b2c2a081b11117ed41d (diff)
downloadexercism-02481656966b0a8dfc95cf3c22bcc049660ff7d4.tar.gz
exercism-02481656966b0a8dfc95cf3c22bcc049660ff7d4.zip
Move Rust exercises in a subdirectory
Diffstat (limited to 'rust/high-scores/src')
-rw-r--r--rust/high-scores/src/lib.rs29
1 files changed, 29 insertions, 0 deletions
diff --git a/rust/high-scores/src/lib.rs b/rust/high-scores/src/lib.rs
new file mode 100644
index 0000000..a7e6c3d
--- /dev/null
+++ b/rust/high-scores/src/lib.rs
@@ -0,0 +1,29 @@
1#[derive(Debug)]
2pub struct HighScores<'a> {
3 scores: &'a [u32]
4}
5
6impl<'a> HighScores<'a> {
7 pub fn new(scores: &'a [u32]) -> Self {
8 HighScores{ scores }
9 }
10
11 pub fn scores(&self) -> &[u32] {
12 self.scores
13 }
14
15 pub fn latest(&self) -> Option<u32> {
16 self.scores.last().copied()
17 }
18
19 pub fn personal_best(&self) -> Option<u32> {
20 self.scores.iter().max().copied()
21 }
22
23 pub fn personal_top_three(&self) -> Vec<u32> {
24 let mut top3 = self.scores.to_vec();
25 top3.sort_unstable_by(|a,b| b.cmp(a));
26 top3.truncate(3);
27 top3
28 }
29}