Enable clippy::ref_as_ptr
(#12918)
# Objective
-
[`clippy::ref_as_ptr`](https://rust-lang.github.io/rust-clippy/master/index.html#/ref_as_ptr)
prevents you from directly casting references to pointers, requiring you
to use `std::ptr::from_ref` instead. This prevents you from accidentally
converting an immutable reference into a mutable pointer (`&x as *mut
T`).
- Follow up to #11818, now that our [`rust-version` is
1.77](11817f4ba4/Cargo.toml (L14)
).
## Solution
- Enable lint and fix all warnings.
This commit is contained in:
parent
d59b1e71ef
commit
5c3ae32ab1
@ -41,8 +41,7 @@ semicolon_if_nothing_returned = "warn"
|
|||||||
|
|
||||||
ptr_as_ptr = "warn"
|
ptr_as_ptr = "warn"
|
||||||
ptr_cast_constness = "warn"
|
ptr_cast_constness = "warn"
|
||||||
#TODO(rust 1.77): enable `ref_as_ptr`
|
ref_as_ptr = "warn"
|
||||||
# ref_as_ptr = "warn"
|
|
||||||
|
|
||||||
[workspace.lints.rust]
|
[workspace.lints.rust]
|
||||||
unsafe_op_in_unsafe_fn = "warn"
|
unsafe_op_in_unsafe_fn = "warn"
|
||||||
|
@ -45,7 +45,7 @@
|
|||||||
unsafe_code
|
unsafe_code
|
||||||
)]
|
)]
|
||||||
|
|
||||||
use std::ptr::null_mut;
|
use std::ptr::{self, null_mut};
|
||||||
|
|
||||||
use glam::Vec3;
|
use glam::Vec3;
|
||||||
|
|
||||||
@ -830,7 +830,7 @@ unsafe fn Build4RuleGroups(
|
|||||||
let mut neigh_indexR: i32 = 0;
|
let mut neigh_indexR: i32 = 0;
|
||||||
let vert_index: i32 = *piTriListIn.offset((f * 3i32 + i) as isize);
|
let vert_index: i32 = *piTriListIn.offset((f * 3i32 + i) as isize);
|
||||||
let ref mut fresh2 = (*pTriInfos.offset(f as isize)).AssignedGroup[i as usize];
|
let ref mut fresh2 = (*pTriInfos.offset(f as isize)).AssignedGroup[i as usize];
|
||||||
*fresh2 = &mut *pGroups.offset(iNrActiveGroups as isize) as *mut SGroup;
|
*fresh2 = ptr::from_mut(&mut *pGroups.offset(iNrActiveGroups as isize));
|
||||||
(*(*pTriInfos.offset(f as isize)).AssignedGroup[i as usize])
|
(*(*pTriInfos.offset(f as isize)).AssignedGroup[i as usize])
|
||||||
.iVertexRepresentative = vert_index;
|
.iVertexRepresentative = vert_index;
|
||||||
(*(*pTriInfos.offset(f as isize)).AssignedGroup[i as usize]).bOrientPreservering =
|
(*(*pTriInfos.offset(f as isize)).AssignedGroup[i as usize]).bOrientPreservering =
|
||||||
@ -838,7 +838,7 @@ unsafe fn Build4RuleGroups(
|
|||||||
(*(*pTriInfos.offset(f as isize)).AssignedGroup[i as usize]).iNrFaces = 0i32;
|
(*(*pTriInfos.offset(f as isize)).AssignedGroup[i as usize]).iNrFaces = 0i32;
|
||||||
let ref mut fresh3 =
|
let ref mut fresh3 =
|
||||||
(*(*pTriInfos.offset(f as isize)).AssignedGroup[i as usize]).pFaceIndices;
|
(*(*pTriInfos.offset(f as isize)).AssignedGroup[i as usize]).pFaceIndices;
|
||||||
*fresh3 = &mut *piGroupTrianglesBuffer.offset(iOffset as isize) as *mut i32;
|
*fresh3 = ptr::from_mut(&mut *piGroupTrianglesBuffer.offset(iOffset as isize));
|
||||||
iNrActiveGroups += 1;
|
iNrActiveGroups += 1;
|
||||||
AddTriToGroup((*pTriInfos.offset(f as isize)).AssignedGroup[i as usize], f);
|
AddTriToGroup((*pTriInfos.offset(f as isize)).AssignedGroup[i as usize], f);
|
||||||
bOrPre = if (*pTriInfos.offset(f as isize)).iFlag & 8i32 != 0i32 {
|
bOrPre = if (*pTriInfos.offset(f as isize)).iFlag & 8i32 != 0i32 {
|
||||||
|
@ -80,6 +80,8 @@ impl Eq for MeshVertexBufferLayoutRef {}
|
|||||||
|
|
||||||
impl Hash for MeshVertexBufferLayoutRef {
|
impl Hash for MeshVertexBufferLayoutRef {
|
||||||
fn hash<H: Hasher>(&self, state: &mut H) {
|
fn hash<H: Hasher>(&self, state: &mut H) {
|
||||||
(&*self.0 as *const MeshVertexBufferLayout as usize).hash(state);
|
// Hash the address of the underlying data, so two layouts that share the same
|
||||||
|
// `MeshVertexBufferLayout` will have the same hash.
|
||||||
|
(Arc::as_ptr(&self.0) as usize).hash(state);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user