From 32595d41bb9683861a7b94994bd5e39eea0a4316 Mon Sep 17 00:00:00 2001 From: Myrddin Dundragon Date: Wed, 2 Jul 2025 15:39:19 -0400 Subject: [PATCH] Swapped longest into its declarative form. The function was ment to use the functional programming style, however, I forgot to uncomment and swap out the imperative style. --- src/basic.rs | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/src/basic.rs b/src/basic.rs index a92d961..99041f0 100644 --- a/src/basic.rs +++ b/src/basic.rs @@ -52,20 +52,26 @@ pub fn longest<'a>(strings: &'a [String]) -> Option<&'a str> return None; } + // Imperative programming style. + // + // ```Rust // This is the current longest string. (index, length) + // let mut longest: (usize, usize) = (0, 0); + // for (index, string) in strings.iter().enumerate() + // { + // if string.len() > longest.1 + // { + // longest = (index, string.len()); + // } + // } + // + // Some(&strings[longest.0]) + // ``` // // This can also be done with functional style: - // strings.iter().max_by_key(|s| s.len()).map(|s| s.as_str()) - let mut longest: (usize, usize) = (0, 0); - for (index, string) in strings.iter().enumerate() - { - if string.len() > longest.1 - { - longest = (index, string.len()); - } - } - - Some(&strings[longest.0]) + // When coding prefer the functional, declarative style. + // It is just as fast or faster than the imperative style. + strings.iter().max_by_key(|s| s.len()).map(|s| s.as_str()) }