diff --git a/docs/dev/style.md b/docs/dev/style.md index cc06d41221..7aed7816ec 100644 --- a/docs/dev/style.md +++ b/docs/dev/style.md @@ -113,6 +113,13 @@ Avoid preconditions that span across function boundaries: ```rust // Good +fn main() { + let s: &str = ...; + if let Some(contents) = string_literal_contents(s) { + + } +} + fn string_literal_contents(s: &str) -> Option<&str> { if s.starts_with('"') && s.ends_with('"') { Some(&s[1..s.len() - 1]) @@ -121,24 +128,17 @@ fn string_literal_contents(s: &str) -> Option<&str> { } } -fn foo() { - let s: &str = ...; - if let Some(contents) = string_literal_contents(s) { - - } -} - // Not as good -fn is_string_literal(s: &str) -> bool { - s.starts_with('"') && s.ends_with('"') -} - -fn foo() { +fn main() { let s: &str = ...; if is_string_literal(s) { let contents = &s[1..s.len() - 1]; } } + +fn is_string_literal(s: &str) -> bool { + s.starts_with('"') && s.ends_with('"') +} ``` In the "Not as good" version, the precondition that `1` is a valid char boundary is checked in `is_string_literal` and used in `foo`.