D6766: rustfilepatterns: refactor the pattern of removing a prefix from a &[u8]
valentin.gatienbaron (Valentin Gatien-Baron)
phabricator at mercurial-scm.org
Thu Sep 5 19:16:28 UTC 2019
Closed by commit rHG62eabdf91f85: rustfilepatterns: refactor the pattern of removing a prefix from a &[u8] (authored by valentin.gatienbaron).
This revision was automatically updated to reflect the committed changes.
This revision was not accepted when it landed; it landed in state "Needs Review".
REPOSITORY
rHG Mercurial
CHANGES SINCE LAST UPDATE
https://phab.mercurial-scm.org/D6766?vs=16326&id=16383
CHANGES SINCE LAST ACTION
https://phab.mercurial-scm.org/D6766/new/
REVISION DETAIL
https://phab.mercurial-scm.org/D6766
AFFECTED FILES
rust/hg-core/src/filepatterns.rs
rust/hg-core/src/utils.rs
CHANGE DETAILS
diff --git a/rust/hg-core/src/utils.rs b/rust/hg-core/src/utils.rs
--- a/rust/hg-core/src/utils.rs
+++ b/rust/hg-core/src/utils.rs
@@ -40,6 +40,7 @@
fn trim_end(&self) -> &Self;
fn trim_start(&self) -> &Self;
fn trim(&self) -> &Self;
+ fn drop_prefix(&self, needle: &Self) -> Option<&Self>;
}
fn is_not_whitespace(c: &u8) -> bool {
@@ -80,4 +81,12 @@
fn trim(&self) -> &[u8] {
self.trim_start().trim_end()
}
+
+ fn drop_prefix(&self, needle: &Self) -> Option<&Self> {
+ if self.starts_with(needle) {
+ Some(&self[needle.len()..])
+ } else {
+ None
+ }
+ }
}
diff --git a/rust/hg-core/src/filepatterns.rs b/rust/hg-core/src/filepatterns.rs
--- a/rust/hg-core/src/filepatterns.rs
+++ b/rust/hg-core/src/filepatterns.rs
@@ -60,8 +60,8 @@
match c {
b'*' => {
for (source, repl) in GLOB_REPLACEMENTS {
- if input.starts_with(source) {
- input = &input[source.len()..];
+ if let Some(rest) = input.drop_prefix(source) {
+ input = rest;
res.extend(*repl);
break;
}
@@ -269,8 +269,8 @@
continue;
}
- if line.starts_with(b"syntax:") {
- let syntax = line[b"syntax:".len()..].trim();
+ if let Some(syntax) = line.drop_prefix(b"syntax:") {
+ let syntax = syntax.trim();
if let Some(rel_syntax) = SYNTAXES.get(syntax) {
current_syntax = rel_syntax;
@@ -283,13 +283,14 @@
let mut line_syntax: &[u8] = ¤t_syntax;
for (s, rels) in SYNTAXES.iter() {
- if line.starts_with(rels) {
+ if let Some(rest) = line.drop_prefix(rels) {
line_syntax = rels;
- line = &line[rels.len()..];
+ line = rest;
break;
- } else if line.starts_with(&[s, b":".as_ref()].concat()) {
+ }
+ if let Some(rest) = line.drop_prefix(&[s, &b":"[..]].concat()) {
line_syntax = rels;
- line = &line[s.len() + 1..];
+ line = rest;
break;
}
}
To: valentin.gatienbaron, #hg-reviewers, kevincox
Cc: durin42, kevincox, mercurial-devel
More information about the Mercurial-devel
mailing list