diff --git a/src/core/info/rustc.rs b/src/core/info/rustc.rs index 43d832c1..a37804ed 100644 --- a/src/core/info/rustc.rs +++ b/src/core/info/rustc.rs @@ -5,11 +5,10 @@ use std::{ collections::BTreeMap, + mem::replace, sync::{Mutex, OnceLock}, }; -use crate::utils::exchange; - // Capture rustc version during compilation. tuwunel_macros::rustc_version! {} @@ -54,7 +53,7 @@ fn append_features(features: &mut Vec<&'static str>, flags: &[&'static str]) { for flag in flags { let is_cfg = *flag == "--cfg"; let is_feature = flag.starts_with("feature="); - if exchange(&mut next_is_cfg, is_cfg) && is_feature { + if replace(&mut next_is_cfg, is_cfg) && is_feature { if let Some(feature) = flag .split_once('=') .map(|(_, feature)| feature.trim_matches('"')) diff --git a/src/core/utils/mod.rs b/src/core/utils/mod.rs index 157d573b..fb3843a5 100644 --- a/src/core/utils/mod.rs +++ b/src/core/utils/mod.rs @@ -42,9 +42,6 @@ pub use self::{ }, }; -#[inline] -pub fn exchange(state: &mut T, source: T) -> T { std::mem::replace(state, source) } - #[macro_export] macro_rules! extract_variant { ( $e:expr_2021, $( $variant:path )|* ) => { diff --git a/src/core/utils/string.rs b/src/core/utils/string.rs index e4e894e0..12b1ef2e 100644 --- a/src/core/utils/string.rs +++ b/src/core/utils/string.rs @@ -4,8 +4,10 @@ mod tests; mod unquote; mod unquoted; +use std::mem::replace; + pub use self::{between::Between, split::SplitInfallible, unquote::Unquote, unquoted::Unquoted}; -use crate::{Result, smallstr::SmallString, utils::exchange}; +use crate::{Result, smallstr::SmallString}; pub const EMPTY: &str = ""; @@ -76,7 +78,7 @@ where .map(char::from) .try_for_each(|ch| { let m = ch.is_ascii_uppercase(); - let s = exchange(&mut state, !m); + let s = replace(&mut state, !m); if m && s { output.write_char('_')?; } diff --git a/src/database/ser.rs b/src/database/ser.rs index e5387327..9cebfd89 100644 --- a/src/database/ser.rs +++ b/src/database/ser.rs @@ -1,7 +1,7 @@ -use std::io::Write; +use std::{io::Write, mem::replace}; use serde::{Deserialize, Serialize, ser}; -use tuwunel_core::{Error, Result, debug::type_name, err, result::DebugInspect, utils::exchange}; +use tuwunel_core::{Error, Result, debug::type_name, err, result::DebugInspect}; use crate::util::unhandled; @@ -97,7 +97,7 @@ impl Serializer<'_, W> { fn record_start(&mut self) -> Result { debug_assert!(!self.is_finalized(), "Starting a record after serialization finalized"); - exchange(&mut self.sep, true) + replace(&mut self.sep, true) .then(|| self.separator()) .unwrap_or(Ok(())) } diff --git a/src/database/stream.rs b/src/database/stream.rs index b92b265e..eeb7d6c3 100644 --- a/src/database/stream.rs +++ b/src/database/stream.rs @@ -3,10 +3,10 @@ mod items_rev; mod keys; mod keys_rev; -use std::sync::Arc; +use std::{mem::replace, sync::Arc}; use rocksdb::{DBRawIteratorWithThreadMode, ReadOptions}; -use tuwunel_core::{Result, utils::exchange}; +use tuwunel_core::Result; pub(crate) use self::{items::Items, items_rev::ItemsRev, keys::Keys, keys_rev::KeysRev}; use crate::{ @@ -94,7 +94,7 @@ impl<'a> State<'a> { #[inline] #[cfg_attr(unabridged, tracing::instrument(level = "trace", skip_all))] pub(super) fn seek_fwd(&mut self) { - if !exchange(&mut self.init, false) { + if !replace(&mut self.init, false) { self.inner.next(); } else if !self.seek { self.inner.seek_to_first(); @@ -104,7 +104,7 @@ impl<'a> State<'a> { #[inline] #[cfg_attr(unabridged, tracing::instrument(level = "trace", skip_all))] pub(super) fn seek_rev(&mut self) { - if !exchange(&mut self.init, false) { + if !replace(&mut self.init, false) { self.inner.prev(); } else if !self.seek { self.inner.seek_to_last();