From 84d27e7b8281fb91ff79ab9d0494b79b2983b071 Mon Sep 17 00:00:00 2001 From: Mads Marquart Date: Tue, 1 Jun 2021 16:24:41 +0200 Subject: [PATCH] Use `str::strip_prefix` instead of custom rm_prefix function Stabilized in Rust 1.45.0 This (together with removing 'static from QUALIFIERS) appeases clippy --- src/parse.rs | 36 ++++++++++++++---------------------- 1 file changed, 14 insertions(+), 22 deletions(-) diff --git a/src/parse.rs b/src/parse.rs index 645776f..ca1280f 100644 --- a/src/parse.rs +++ b/src/parse.rs @@ -2,7 +2,7 @@ use crate::Encoding; -const QUALIFIERS: &'static [char] = &[ +const QUALIFIERS: &[char] = &[ 'r', // const 'n', // in 'N', // inout @@ -36,43 +36,43 @@ fn rm_enc_prefix<'a>(s: &'a str, enc: &Encoding) -> Option<&'a str> { Sel => ":", Unknown => "?", BitField(b) => { - let s = rm_prefix(s, "b")?; + let s = s.strip_prefix("b")?; return rm_int_prefix(s, b); } Pointer(t) => { - let s = rm_prefix(s, "^")?; + let s = s.strip_prefix("^")?; return rm_enc_prefix(s, t); } Array(len, item) => { let mut s = s; - s = rm_prefix(s, "[")?; + s = s.strip_prefix("[")?; s = rm_int_prefix(s, len)?; s = rm_enc_prefix(s, item)?; - return rm_prefix(s, "]"); + return s.strip_prefix("]"); } Struct(name, fields) => { let mut s = s; - s = rm_prefix(s, "{")?; - s = rm_prefix(s, name)?; - s = rm_prefix(s, "=")?; + s = s.strip_prefix("{")?; + s = s.strip_prefix(name)?; + s = s.strip_prefix("=")?; for field in fields { s = rm_enc_prefix(s, field)?; } - return rm_prefix(s, "}"); + return s.strip_prefix("}"); } Union(name, members) => { let mut s = s; - s = rm_prefix(s, "(")?; - s = rm_prefix(s, name)?; - s = rm_prefix(s, "=")?; + s = s.strip_prefix("(")?; + s = s.strip_prefix(name)?; + s = s.strip_prefix("=")?; for member in members { s = rm_enc_prefix(s, member)?; } - return rm_prefix(s, ")"); + return s.strip_prefix(")"); } }; - rm_prefix(s, code) + s.strip_prefix(code) } fn chomp_int(s: &str) -> Option<(u32, &str)> { @@ -89,14 +89,6 @@ fn rm_int_prefix(s: &str, other: u32) -> Option<&str> { .and_then(|(n, t)| if other == n { Some(t) } else { None }) } -fn rm_prefix<'a>(s: &'a str, other: &str) -> Option<&'a str> { - if s.starts_with(other) { - Some(&s[other.len()..]) - } else { - None - } -} - pub fn eq_enc(s: &str, enc: &Encoding) -> bool { // strip qualifiers let s = s.trim_start_matches(QUALIFIERS);