library: Normalize safety-for-unsafe-block comments
Almost all safety comments are of the form `// SAFETY:`, so normalize the rest and fix a few of them that should have been a `/// # Safety` section instead. Furthermore, make `tidy` only allow the uppercase form. While currently `tidy` only checks `core`, it is a good idea to prevent `core` from drifting to non-uppercase comments, so that later we can start checking `alloc` etc. too. Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
This commit is contained in:
parent
fe1bf8e05c
commit
eefec8abda
7 changed files with 26 additions and 19 deletions
|
@ -106,7 +106,7 @@ impl<I: Write> BufferedCopySpec for BufWriter<I> {
|
|||
Ok(0) => return Ok(len), // EOF reached
|
||||
Ok(bytes_read) => {
|
||||
assert!(bytes_read <= spare_cap.len());
|
||||
// Safety: The initializer contract guarantees that either it or `read`
|
||||
// SAFETY: The initializer contract guarantees that either it or `read`
|
||||
// will have initialized these bytes. And we just checked that the number
|
||||
// of bytes is within the buffer capacity.
|
||||
unsafe { buf.set_len(buf.len() + bytes_read) };
|
||||
|
|
|
@ -440,13 +440,17 @@ impl<T> SyncOnceCell<T> {
|
|||
res
|
||||
}
|
||||
|
||||
/// Safety: The value must be initialized
|
||||
/// # Safety
|
||||
///
|
||||
/// The value must be initialized
|
||||
unsafe fn get_unchecked(&self) -> &T {
|
||||
debug_assert!(self.is_initialized());
|
||||
(&*self.value.get()).assume_init_ref()
|
||||
}
|
||||
|
||||
/// Safety: The value must be initialized
|
||||
/// # Safety
|
||||
///
|
||||
/// The value must be initialized
|
||||
unsafe fn get_unchecked_mut(&mut self) -> &mut T {
|
||||
debug_assert!(self.is_initialized());
|
||||
(&mut *self.value.get()).assume_init_mut()
|
||||
|
@ -456,7 +460,7 @@ impl<T> SyncOnceCell<T> {
|
|||
unsafe impl<#[may_dangle] T> Drop for SyncOnceCell<T> {
|
||||
fn drop(&mut self) {
|
||||
if self.is_initialized() {
|
||||
// Safety: The cell is initialized and being dropped, so it can't
|
||||
// SAFETY: The cell is initialized and being dropped, so it can't
|
||||
// be accessed again. We also don't touch the `T` other than
|
||||
// dropping it, which validates our usage of #[may_dangle].
|
||||
unsafe { (&mut *self.value.get()).assume_init_drop() };
|
||||
|
|
|
@ -8,7 +8,9 @@ mod tests;
|
|||
pub const MAIN_SEP_STR: &str = "\\";
|
||||
pub const MAIN_SEP: char = '\\';
|
||||
|
||||
// Safety: `bytes` must be a valid wtf8 encoded slice
|
||||
/// # Safety
|
||||
///
|
||||
/// `bytes` must be a valid wtf8 encoded slice
|
||||
#[inline]
|
||||
unsafe fn bytes_as_os_str(bytes: &[u8]) -> &OsStr {
|
||||
// &OsStr is layout compatible with &Slice, which is compatible with &Wtf8,
|
||||
|
@ -130,7 +132,7 @@ fn parse_next_component(path: &OsStr, verbatim: bool) -> (&OsStr, &OsStr) {
|
|||
// The max `separator_end` is `bytes.len()` and `bytes[bytes.len()..]` is a valid index.
|
||||
let path = &path.bytes()[separator_end..];
|
||||
|
||||
// Safety: `path` is a valid wtf8 encoded slice and each of the separators ('/', '\')
|
||||
// SAFETY: `path` is a valid wtf8 encoded slice and each of the separators ('/', '\')
|
||||
// is encoded in a single byte, therefore `bytes[separator_start]` and
|
||||
// `bytes[separator_end]` must be code point boundaries and thus
|
||||
// `bytes[..separator_start]` and `bytes[separator_end..]` are valid wtf8 slices.
|
||||
|
|
|
@ -103,7 +103,7 @@ impl StaticRWLock {
|
|||
/// The lock is automatically unlocked when the returned guard is dropped.
|
||||
#[inline]
|
||||
pub fn read_with_guard(&'static self) -> RWLockReadGuard {
|
||||
// Safety: All methods require static references, therefore self
|
||||
// SAFETY: All methods require static references, therefore self
|
||||
// cannot be moved between invocations.
|
||||
unsafe {
|
||||
self.0.read();
|
||||
|
@ -117,7 +117,7 @@ impl StaticRWLock {
|
|||
/// The lock is automatically unlocked when the returned guard is dropped.
|
||||
#[inline]
|
||||
pub fn write_with_guard(&'static self) -> RWLockWriteGuard {
|
||||
// Safety: All methods require static references, therefore self
|
||||
// SAFETY: All methods require static references, therefore self
|
||||
// cannot be moved between invocations.
|
||||
unsafe {
|
||||
self.0.write();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue