Rollup merge of #85275 - CDirkx:memchr, r=m-ou-se
Move `std::memchr` to `sys_common` `std::memchr` is a thin abstraction over the different `memchr` implementations in `sys`, along with documentation and tests. The module is only used internally by `std`, nothing is exported externally. Code like this is exactly what the `sys_common` module is for, so this PR moves it there.
This commit is contained in:
commit
0d3bee8be0
9 changed files with 10 additions and 8 deletions
|
@ -10,7 +10,6 @@ use crate::error::Error;
|
||||||
use crate::fmt::{self, Write};
|
use crate::fmt::{self, Write};
|
||||||
use crate::io;
|
use crate::io;
|
||||||
use crate::mem;
|
use crate::mem;
|
||||||
use crate::memchr;
|
|
||||||
use crate::num::NonZeroU8;
|
use crate::num::NonZeroU8;
|
||||||
use crate::ops;
|
use crate::ops;
|
||||||
use crate::os::raw::c_char;
|
use crate::os::raw::c_char;
|
||||||
|
@ -20,6 +19,7 @@ use crate::slice;
|
||||||
use crate::str::{self, Utf8Error};
|
use crate::str::{self, Utf8Error};
|
||||||
use crate::sync::Arc;
|
use crate::sync::Arc;
|
||||||
use crate::sys;
|
use crate::sys;
|
||||||
|
use crate::sys_common::memchr;
|
||||||
|
|
||||||
/// A type representing an owned, C-compatible, nul-terminated string with no nul bytes in the
|
/// A type representing an owned, C-compatible, nul-terminated string with no nul bytes in the
|
||||||
/// middle.
|
/// middle.
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
use crate::io::{self, BufWriter, IoSlice, Write};
|
use crate::io::{self, BufWriter, IoSlice, Write};
|
||||||
use crate::memchr;
|
use crate::sys_common::memchr;
|
||||||
|
|
||||||
/// Private helper struct for implementing the line-buffered writing logic.
|
/// Private helper struct for implementing the line-buffered writing logic.
|
||||||
/// This shim temporarily wraps a BufWriter, and uses its internals to
|
/// This shim temporarily wraps a BufWriter, and uses its internals to
|
||||||
|
|
|
@ -253,12 +253,12 @@ mod tests;
|
||||||
|
|
||||||
use crate::cmp;
|
use crate::cmp;
|
||||||
use crate::fmt;
|
use crate::fmt;
|
||||||
use crate::memchr;
|
|
||||||
use crate::ops::{Deref, DerefMut};
|
use crate::ops::{Deref, DerefMut};
|
||||||
use crate::ptr;
|
use crate::ptr;
|
||||||
use crate::slice;
|
use crate::slice;
|
||||||
use crate::str;
|
use crate::str;
|
||||||
use crate::sys;
|
use crate::sys;
|
||||||
|
use crate::sys_common::memchr;
|
||||||
|
|
||||||
#[stable(feature = "rust1", since = "1.0.0")]
|
#[stable(feature = "rust1", since = "1.0.0")]
|
||||||
pub use self::buffered::IntoInnerError;
|
pub use self::buffered::IntoInnerError;
|
||||||
|
|
|
@ -530,7 +530,6 @@ mod sys;
|
||||||
pub mod alloc;
|
pub mod alloc;
|
||||||
|
|
||||||
// Private support modules
|
// Private support modules
|
||||||
mod memchr;
|
|
||||||
mod panicking;
|
mod panicking;
|
||||||
|
|
||||||
// The runtime entry point and a few unstable public functions used by the
|
// The runtime entry point and a few unstable public functions used by the
|
||||||
|
|
|
@ -4,11 +4,11 @@ use crate::ffi::{CStr, OsStr, OsString};
|
||||||
use crate::fmt;
|
use crate::fmt;
|
||||||
use crate::io;
|
use crate::io;
|
||||||
use crate::marker::PhantomData;
|
use crate::marker::PhantomData;
|
||||||
use crate::memchr;
|
|
||||||
use crate::path::{self, PathBuf};
|
use crate::path::{self, PathBuf};
|
||||||
use crate::str;
|
use crate::str;
|
||||||
use crate::sync::Mutex;
|
use crate::sync::Mutex;
|
||||||
use crate::sys::hermit::abi;
|
use crate::sys::hermit::abi;
|
||||||
|
use crate::sys::memchr;
|
||||||
use crate::sys::unsupported;
|
use crate::sys::unsupported;
|
||||||
use crate::sys_common::os_str_bytes::*;
|
use crate::sys_common::os_str_bytes::*;
|
||||||
use crate::vec;
|
use crate::vec;
|
||||||
|
|
|
@ -13,13 +13,13 @@ use crate::fmt;
|
||||||
use crate::io;
|
use crate::io;
|
||||||
use crate::iter;
|
use crate::iter;
|
||||||
use crate::mem;
|
use crate::mem;
|
||||||
use crate::memchr;
|
|
||||||
use crate::path::{self, PathBuf};
|
use crate::path::{self, PathBuf};
|
||||||
use crate::ptr;
|
use crate::ptr;
|
||||||
use crate::slice;
|
use crate::slice;
|
||||||
use crate::str;
|
use crate::str;
|
||||||
use crate::sys::cvt;
|
use crate::sys::cvt;
|
||||||
use crate::sys::fd;
|
use crate::sys::fd;
|
||||||
|
use crate::sys::memchr;
|
||||||
use crate::sys::rwlock::{RWLockReadGuard, StaticRWLock};
|
use crate::sys::rwlock::{RWLockReadGuard, StaticRWLock};
|
||||||
use crate::sys_common::mutex::{StaticMutex, StaticMutexGuard};
|
use crate::sys_common::mutex::{StaticMutex, StaticMutexGuard};
|
||||||
use crate::vec;
|
use crate::vec;
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
// Original implementation taken from rust-memchr.
|
// Original implementation taken from rust-memchr.
|
||||||
// Copyright 2015 Andrew Gallant, bluss and Nicolas Koch
|
// Copyright 2015 Andrew Gallant, bluss and Nicolas Koch
|
||||||
|
|
||||||
|
use crate::sys::memchr as sys;
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests;
|
mod tests;
|
||||||
|
|
||||||
|
@ -25,7 +27,7 @@ mod tests;
|
||||||
/// ```
|
/// ```
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn memchr(needle: u8, haystack: &[u8]) -> Option<usize> {
|
pub fn memchr(needle: u8, haystack: &[u8]) -> Option<usize> {
|
||||||
crate::sys::memchr::memchr(needle, haystack)
|
sys::memchr(needle, haystack)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// A safe interface to `memrchr`.
|
/// A safe interface to `memrchr`.
|
||||||
|
@ -45,5 +47,5 @@ pub fn memchr(needle: u8, haystack: &[u8]) -> Option<usize> {
|
||||||
/// ```
|
/// ```
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn memrchr(needle: u8, haystack: &[u8]) -> Option<usize> {
|
pub fn memrchr(needle: u8, haystack: &[u8]) -> Option<usize> {
|
||||||
crate::sys::memchr::memrchr(needle, haystack)
|
sys::memrchr(needle, haystack)
|
||||||
}
|
}
|
|
@ -25,6 +25,7 @@ pub mod bytestring;
|
||||||
pub mod condvar;
|
pub mod condvar;
|
||||||
pub mod fs;
|
pub mod fs;
|
||||||
pub mod io;
|
pub mod io;
|
||||||
|
pub mod memchr;
|
||||||
pub mod mutex;
|
pub mod mutex;
|
||||||
// `doc` is required because `sys/mod.rs` imports `unix/ext/mod.rs` on Windows
|
// `doc` is required because `sys/mod.rs` imports `unix/ext/mod.rs` on Windows
|
||||||
// when generating documentation.
|
// when generating documentation.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue