Rollup merge of #44537 - oli-obk:memchr, r=alexcrichton

More `align_offset` things

cc #44488
This commit is contained in:
Alex Crichton
2017-09-18 11:04:21 -05:00
committed by GitHub
5 changed files with 80 additions and 41 deletions

View File

@@ -242,6 +242,7 @@
#![feature(allocator_internals)]
#![feature(allow_internal_unsafe)]
#![feature(allow_internal_unstable)]
#![feature(align_offset)]
#![feature(asm)]
#![feature(box_syntax)]
#![feature(cfg_target_has_atomic)]

View File

@@ -65,15 +65,12 @@ pub mod fallback {
let usize_bytes = mem::size_of::<usize>();
// search up to an aligned boundary
let align = (ptr as usize) & (usize_bytes- 1);
let mut offset;
if align > 0 {
offset = cmp::min(usize_bytes - align, len);
let mut offset = ptr.align_offset(usize_bytes);
if offset > 0 {
offset = cmp::min(offset, len);
if let Some(index) = text[..offset].iter().position(|elt| *elt == x) {
return Some(index);
}
} else {
offset = 0;
}
// search the body of the text