Add Freeze::clone
This commit is contained in:
parent
f49382c050
commit
c83eba9251
2 changed files with 12 additions and 8 deletions
|
@ -45,6 +45,16 @@ impl<T> FreezeLock<T> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Clones the inner value along with the frozen state.
|
||||||
|
#[inline]
|
||||||
|
pub fn clone(&self) -> Self
|
||||||
|
where
|
||||||
|
T: Clone,
|
||||||
|
{
|
||||||
|
let lock = self.read();
|
||||||
|
Self::with(lock.clone(), self.is_frozen())
|
||||||
|
}
|
||||||
|
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn is_frozen(&self) -> bool {
|
pub fn is_frozen(&self) -> bool {
|
||||||
self.frozen.load(Ordering::Acquire)
|
self.frozen.load(Ordering::Acquire)
|
||||||
|
|
|
@ -1367,16 +1367,10 @@ impl Clone for SourceFile {
|
||||||
name: self.name.clone(),
|
name: self.name.clone(),
|
||||||
src: self.src.clone(),
|
src: self.src.clone(),
|
||||||
src_hash: self.src_hash,
|
src_hash: self.src_hash,
|
||||||
external_src: {
|
external_src: self.external_src.clone(),
|
||||||
let lock = self.external_src.read();
|
|
||||||
FreezeLock::with(lock.clone(), self.external_src.is_frozen())
|
|
||||||
},
|
|
||||||
start_pos: self.start_pos,
|
start_pos: self.start_pos,
|
||||||
source_len: self.source_len,
|
source_len: self.source_len,
|
||||||
lines: {
|
lines: self.lines.clone(),
|
||||||
let lock = self.lines.read();
|
|
||||||
FreezeLock::with(lock.clone(), self.lines.is_frozen())
|
|
||||||
},
|
|
||||||
multibyte_chars: self.multibyte_chars.clone(),
|
multibyte_chars: self.multibyte_chars.clone(),
|
||||||
non_narrow_chars: self.non_narrow_chars.clone(),
|
non_narrow_chars: self.non_narrow_chars.clone(),
|
||||||
normalized_pos: self.normalized_pos.clone(),
|
normalized_pos: self.normalized_pos.clone(),
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue