//---------- multi-borrowing, runtime-checked ----------
/// Conflicting borrows occurred
-#[derive(Debug)]
-pub struct BorrowConflict;
+#[derive(Debug, Clone, Copy, Eq, PartialEq, Ord, PartialOrd)]
+pub struct BorrowConflictError;
-impl Display for BorrowConflict {
+impl Display for BorrowConflictError {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "conflicting borrows attempted")
}
}
-impl std::error::Error for BorrowConflict {}
+impl std::error::Error for BorrowConflictError {}
-type BorrowResult<T> = Result<T, BorrowConflict>;
+type BorrowResult<T> = Result<T, BorrowConflictError>;
/// Tracker for multiple borrows (dynamic)
///
fn borrow_inner_check(&mut self, p: NonNull<()>) -> BorrowResult<()> {
if self.mut_given.contains(&p) {
- return Err(BorrowConflict)
+ return Err(BorrowConflictError)
}
self.ref_given.insert(p);
Ok(())
fn borrow_mut_inner_check(&mut self, p: NonNull<()>) -> BorrowResult<()> {
if self.ref_given.contains(&p) {
- return Err(BorrowConflict)
+ return Err(BorrowConflictError)
}
if !self.mut_given.insert(p) {
- return Err(BorrowConflict)
+ return Err(BorrowConflictError)
}
Ok(())
}
}
fn forbid_alias(this: *const (), new: NonNull<()>) -> BorrowResult<()> {
- if this == new.as_ptr() { return Err(BorrowConflict) }
+ if this == new.as_ptr() { return Err(BorrowConflictError) }
Ok(())
}
where 'a: 'r
{
match self.l.alias_check_ref(p.ptr.cast()) {
- Err(BorrowConflict) => Err(self),
+ Err(BorrowConflictError) => Err(self),
Ok(()) => Ok((
unsafe { p.ptr.as_ref() },
MultiStatic {
where 'a: 'r
{
match self.l.alias_check_mut(p.ptr.cast()) {
- Err(BorrowConflict) => Err(self),
+ Err(BorrowConflictError) => Err(self),
Ok(()) => Ok((
unsafe { p.ptr.as_mut() },
MultiStatic {