Skip to content

Commit 5089043

Browse files
committed
1 parent 364579a commit 5089043

9 files changed

Lines changed: 45 additions & 44 deletions

File tree

crates/edit/src/base64.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ pub fn encode(dst: &mut ArenaString, src: &[u8]) {
3535
// SAFETY: Thanks to `remaining > 3`, reading 4 bytes at once is safe.
3636
// This improves performance massively over a byte-by-byte approach,
3737
// because it allows us to byte-swap the read and use simple bit-shifts below.
38-
let val = u32::from_be((inp as *const u32).read_unaligned());
38+
let val = u32::from_be(inp.cast::<u32>().read_unaligned());
3939
inp = inp.add(3);
4040
remaining -= 3;
4141

crates/edit/src/hash.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,11 +91,11 @@ unsafe fn wyr3(p: *const u8, k: usize) -> u64 {
9191
}
9292

9393
unsafe fn wyr4(p: *const u8) -> u64 {
94-
unsafe { (p as *const u32).read_unaligned() as u64 }
94+
unsafe { p.cast::<u32>().read_unaligned() as u64 }
9595
}
9696

9797
unsafe fn wyr8(p: *const u8) -> u64 {
98-
unsafe { (p as *const u64).read_unaligned() }
98+
unsafe { p.cast::<u64>().read_unaligned() }
9999
}
100100

101101
// This is a weak mix function on its own. It may be worth considering

crates/edit/src/helpers.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -255,7 +255,7 @@ pub fn file_read_uninit<T: Read>(
255255
buf: &mut [MaybeUninit<u8>],
256256
) -> apperr::Result<usize> {
257257
unsafe {
258-
let buf_slice = slice::from_raw_parts_mut(buf.as_mut_ptr() as *mut u8, buf.len());
258+
let buf_slice = slice::from_raw_parts_mut(buf.as_mut_ptr().cast::<u8>(), buf.len());
259259
let n = file.read(buf_slice)?;
260260
Ok(n)
261261
}
@@ -264,13 +264,13 @@ pub fn file_read_uninit<T: Read>(
264264
/// Turns a [`&[u8]`] into a [`&[MaybeUninit<T>]`].
265265
#[inline(always)]
266266
pub const fn slice_as_uninit_ref<T>(slice: &[T]) -> &[MaybeUninit<T>] {
267-
unsafe { slice::from_raw_parts(slice.as_ptr() as *const MaybeUninit<T>, slice.len()) }
267+
unsafe { slice::from_raw_parts(slice.as_ptr().cast(), slice.len()) }
268268
}
269269

270270
/// Turns a [`&mut [T]`] into a [`&mut [MaybeUninit<T>]`].
271271
#[inline(always)]
272272
pub const fn slice_as_uninit_mut<T>(slice: &mut [T]) -> &mut [MaybeUninit<T>] {
273-
unsafe { slice::from_raw_parts_mut(slice.as_mut_ptr() as *mut MaybeUninit<T>, slice.len()) }
273+
unsafe { slice::from_raw_parts_mut(slice.as_mut_ptr().cast(), slice.len()) }
274274
}
275275

276276
/// Helpers for ASCII string comparisons.

crates/edit/src/icu.rs

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ pub fn get_available_encodings() -> &'static Encodings {
6565
let mut status = icu_ffi::U_ZERO_ERROR;
6666
let mime = (f.ucnv_getStandardName)(
6767
name.as_ptr(),
68-
c"MIME".as_ptr() as *const _,
68+
c"MIME".as_ptr().cast(),
6969
&mut status,
7070
);
7171
if !mime.is_null() && status.is_success() {
@@ -169,7 +169,7 @@ impl<'pivot> Converter<'pivot> {
169169
return Err(status.as_error());
170170
}
171171

172-
let pivot_source = pivot_buffer.as_mut_ptr() as *mut u16;
172+
let pivot_source = pivot_buffer.as_mut_ptr().cast::<u16>();
173173
let pivot_target = unsafe { pivot_source.add(pivot_buffer.len()) };
174174

175175
Ok(Self { source, target, pivot_buffer, pivot_source, pivot_target, reset: true })
@@ -204,11 +204,11 @@ impl<'pivot> Converter<'pivot> {
204204
let input_end = unsafe { input_beg.add(input.len()) };
205205
let mut input_ptr = input_beg;
206206

207-
let output_beg = output.as_mut_ptr() as *mut u8;
207+
let output_beg = output.as_mut_ptr().cast::<u8>();
208208
let output_end = unsafe { output_beg.add(output.len()) };
209209
let mut output_ptr = output_beg;
210210

211-
let pivot_beg = self.pivot_buffer.as_mut_ptr() as *mut u16;
211+
let pivot_beg = self.pivot_buffer.as_mut_ptr().cast::<u16>();
212212
let pivot_end = unsafe { pivot_beg.add(self.pivot_buffer.len()) };
213213

214214
let flush = input.is_empty();
@@ -346,7 +346,7 @@ fn text_buffer_from_utext<'a>(ut: &icu_ffi::UText) -> &'a TextBuffer {
346346
}
347347

348348
fn double_cache_from_utext<'a>(ut: &icu_ffi::UText) -> &'a mut DoubleCache {
349-
unsafe { &mut *(ut.p_extra as *mut DoubleCache) }
349+
unsafe { &mut *ut.p_extra.cast() }
350350
}
351351

352352
extern "C" fn utext_clone(
@@ -844,9 +844,9 @@ pub fn fold_case<'a>(arena: &'a Arena, input: &str) -> ArenaString<'a> {
844844
output_len = unsafe {
845845
(f.ucasemap_utf8FoldCase)(
846846
casemap,
847-
output.as_mut_ptr() as *mut _,
847+
output.as_mut_ptr().cast(),
848848
output.len() as i32,
849-
input.as_ptr() as *const _,
849+
input.as_ptr().cast(),
850850
input.len() as i32,
851851
&mut status,
852852
)
@@ -860,9 +860,9 @@ pub fn fold_case<'a>(arena: &'a Arena, input: &str) -> ArenaString<'a> {
860860
output_len = unsafe {
861861
(f.ucasemap_utf8FoldCase)(
862862
casemap,
863-
output.as_mut_ptr() as *mut _,
863+
output.as_mut_ptr().cast(),
864864
output.len() as i32,
865-
input.as_ptr() as *const _,
865+
input.as_ptr().cast(),
866866
input.len() as i32,
867867
&mut status,
868868
)
@@ -927,7 +927,8 @@ struct LibraryFunctions {
927927
macro_rules! proc_name {
928928
($s:literal) => {
929929
concat!(env!("EDIT_CFG_ICU_EXPORT_PREFIX"), $s, env!("EDIT_CFG_ICU_EXPORT_SUFFIX"), "\0")
930-
.as_ptr() as *const c_char
930+
.as_ptr()
931+
.cast()
931932
};
932933
}
933934

@@ -1002,7 +1003,7 @@ fn init_if_needed() -> apperr::Result<&'static LibraryFunctions> {
10021003
);
10031004

10041005
let mut funcs = MaybeUninit::<LibraryFunctions>::uninit();
1005-
let mut ptr = funcs.as_mut_ptr() as *mut TransparentFunction;
1006+
let mut ptr = funcs.as_mut_ptr().cast::<TransparentFunction>();
10061007

10071008
#[cfg(edit_icu_renaming_auto_detect)]
10081009
let scratch_outer = scratch_arena(None);

crates/edit/src/simd/memchr2.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,7 @@ unsafe fn memchr2_neon(needle1: u8, needle2: u8, mut beg: *const u8, end: *const
195195
let n2 = vdupq_n_u8(needle2);
196196

197197
loop {
198-
let v = vld1q_u8(beg as *const _);
198+
let v = vld1q_u8(beg.cast());
199199
let a = vceqq_u8(v, n1);
200200
let b = vceqq_u8(v, n2);
201201
let c = vorrq_u8(a, b);

crates/edit/src/simd/memset.rs

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -51,19 +51,19 @@ pub fn memset<T: MemsetSafe>(dst: &mut [T], val: T) {
5151
let beg = dst.as_mut_ptr();
5252
let end = beg.add(dst.len());
5353
let val = mem::transmute_copy::<_, u16>(&val);
54-
memset_raw(beg as *mut u8, end as *mut u8, val as u64 * 0x0001000100010001);
54+
memset_raw(beg.cast(), end.cast(), val as u64 * 0x0001000100010001);
5555
}
5656
4 => {
5757
let beg = dst.as_mut_ptr();
5858
let end = beg.add(dst.len());
5959
let val = mem::transmute_copy::<_, u32>(&val);
60-
memset_raw(beg as *mut u8, end as *mut u8, val as u64 * 0x0000000100000001);
60+
memset_raw(beg.cast(), end.cast(), val as u64 * 0x0000000100000001);
6161
}
6262
8 => {
6363
let beg = dst.as_mut_ptr();
6464
let end = beg.add(dst.len());
6565
let val = mem::transmute_copy::<_, u64>(&val);
66-
memset_raw(beg as *mut u8, end as *mut u8, val);
66+
memset_raw(beg.cast(), end.cast(), val);
6767
}
6868
_ => unreachable!(),
6969
}
@@ -88,19 +88,19 @@ unsafe fn memset_fallback(mut beg: *mut u8, end: *mut u8, val: u64) {
8888
let mut remaining = end.offset_from_unsigned(beg);
8989

9090
while remaining >= 8 {
91-
(beg as *mut u64).write_unaligned(val);
91+
beg.cast::<u64>().write_unaligned(val);
9292
beg = beg.add(8);
9393
remaining -= 8;
9494
}
9595

9696
if remaining >= 4 {
9797
// 4-7 bytes remaining
98-
(beg as *mut u32).write_unaligned(val as u32);
99-
(end.sub(4) as *mut u32).write_unaligned(val as u32);
98+
beg.cast::<u32>().write_unaligned(val as u32);
99+
end.sub(4).cast::<u32>().write_unaligned(val as u32);
100100
} else if remaining >= 2 {
101101
// 2-3 bytes remaining
102-
(beg as *mut u16).write_unaligned(val as u16);
103-
(end.sub(2) as *mut u16).write_unaligned(val as u16);
102+
beg.cast::<u16>().write_unaligned(val as u16);
103+
end.sub(2).cast::<u16>().write_unaligned(val as u16);
104104
} else if remaining >= 1 {
105105
// 1 byte remaining
106106
beg.write(val as u8);
@@ -368,8 +368,8 @@ unsafe fn memset_neon(mut beg: *mut u8, end: *mut u8, val: u64) {
368368

369369
loop {
370370
// Compiles to a single `stp` instruction.
371-
vst1q_u64(beg as *mut _, fill);
372-
vst1q_u64(beg.add(16) as *mut _, fill);
371+
vst1q_u64(beg.cast(), fill);
372+
vst1q_u64(beg.add(16).cast(), fill);
373373

374374
beg = beg.add(32);
375375
remaining -= 32;
@@ -382,20 +382,20 @@ unsafe fn memset_neon(mut beg: *mut u8, end: *mut u8, val: u64) {
382382
if remaining >= 16 {
383383
// 16-31 bytes remaining
384384
let fill = vdupq_n_u64(val);
385-
vst1q_u64(beg as *mut _, fill);
386-
vst1q_u64(end.sub(16) as *mut _, fill);
385+
vst1q_u64(beg.cast(), fill);
386+
vst1q_u64(end.sub(16).cast(), fill);
387387
} else if remaining >= 8 {
388388
// 8-15 bytes remaining
389-
(beg as *mut u64).write_unaligned(val);
390-
(end.sub(8) as *mut u64).write_unaligned(val);
389+
beg.cast::<u64>().write_unaligned(val);
390+
end.sub(8).cast::<u64>().write_unaligned(val);
391391
} else if remaining >= 4 {
392392
// 4-7 bytes remaining
393-
(beg as *mut u32).write_unaligned(val as u32);
394-
(end.sub(4) as *mut u32).write_unaligned(val as u32);
393+
beg.cast::<u32>().write_unaligned(val as u32);
394+
end.sub(4).cast::<u32>().write_unaligned(val as u32);
395395
} else if remaining >= 2 {
396396
// 2-3 bytes remaining
397-
(beg as *mut u16).write_unaligned(val as u16);
398-
(end.sub(2) as *mut u16).write_unaligned(val as u16);
397+
beg.cast::<u16>().write_unaligned(val as u16);
398+
end.sub(2).cast::<u16>().write_unaligned(val as u16);
399399
} else if remaining >= 1 {
400400
// 1 byte remaining
401401
beg.write(val as u8);

crates/edit/src/sys/unix.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -225,7 +225,7 @@ pub fn read_stdin(arena: &Arena, mut timeout: time::Duration) -> Option<ArenaStr
225225

226226
// Read from stdin.
227227
let spare = buf.spare_capacity_mut();
228-
let ret = libc::read(STATE.stdin, spare.as_mut_ptr() as *mut _, spare.len());
228+
let ret = libc::read(STATE.stdin, spare.as_mut_ptr().cast(), spare.len());
229229
if ret > 0 {
230230
buf.set_len(buf.len() + ret as usize);
231231
break;
@@ -306,7 +306,7 @@ pub fn write_stdout(text: &str) {
306306
while written < buf.len() {
307307
let w = &buf[written..];
308308
let w = &buf[..w.len().min(GIBI)];
309-
let n = unsafe { libc::write(STATE.stdout, w.as_ptr() as *const _, w.len()) };
309+
let n = unsafe { libc::write(STATE.stdout, w.as_ptr().cast(), w.len()) };
310310

311311
if n >= 0 {
312312
written += n as usize;
@@ -421,11 +421,11 @@ pub fn load_icu() -> apperr::Result<LibIcu> {
421421
const LIBICUI18N: &str = concat!(env!("EDIT_CFG_ICUI18N_SONAME"), "\0");
422422

423423
if const { const_str_eq(LIBICUUC, LIBICUI18N) } {
424-
let icu = unsafe { load_library(LIBICUUC.as_ptr() as *const _)? };
424+
let icu = unsafe { load_library(LIBICUUC.as_ptr().cast())? };
425425
Ok(LibIcu { libicuuc: icu, libicui18n: icu })
426426
} else {
427-
let libicuuc = unsafe { load_library(LIBICUUC.as_ptr() as *const _)? };
428-
let libicui18n = unsafe { load_library(LIBICUI18N.as_ptr() as *const _)? };
427+
let libicuuc = unsafe { load_library(LIBICUUC.as_ptr().cast())? };
428+
let libicui18n = unsafe { load_library(LIBICUI18N.as_ptr().cast())? };
429429
Ok(LibIcu { libicuuc, libicui18n })
430430
}
431431
}

crates/stdext/src/helpers.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -142,13 +142,13 @@ fn vec_replace_impl<T: Copy, A: Allocator>(dst: &mut Vec<T, A>, range: Range<usi
142142
/// Turns a [`&[u8]`] into a [`&[MaybeUninit<T>]`].
143143
#[inline(always)]
144144
pub const fn slice_as_uninit_ref<T>(slice: &[T]) -> &[MaybeUninit<T>] {
145-
unsafe { slice::from_raw_parts(slice.as_ptr() as *const MaybeUninit<T>, slice.len()) }
145+
unsafe { slice::from_raw_parts(slice.as_ptr().cast(), slice.len()) }
146146
}
147147

148148
/// Turns a [`&mut [T]`] into a [`&mut [MaybeUninit<T>]`].
149149
#[inline(always)]
150150
pub const fn slice_as_uninit_mut<T>(slice: &mut [T]) -> &mut [MaybeUninit<T>] {
151-
unsafe { slice::from_raw_parts_mut(slice.as_mut_ptr() as *mut MaybeUninit<T>, slice.len()) }
151+
unsafe { slice::from_raw_parts_mut(slice.as_mut_ptr().cast(), slice.len()) }
152152
}
153153

154154
/// Helpers for ASCII string comparisons.

crates/stdext/src/sys/unix.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ pub unsafe fn virtual_reserve(size: usize) -> Result<NonNull<u8>, AllocError> {
2626
if ptr.is_null() || ptr::eq(ptr, libc::MAP_FAILED) {
2727
Err(AllocError)
2828
} else {
29-
Ok(NonNull::new_unchecked(ptr as *mut u8))
29+
Ok(NonNull::new_unchecked(ptr.cast()))
3030
}
3131
}
3232
}

0 commit comments

Comments
 (0)