better display for locations in panic messages
This commit is contained in:
1 parent
9154b0f8ea
commit
60d6137f39
1 file changed
+20
-2
@@ -42,6 +42,22 @@ pub mod diagnostics {
|
|||||||
pub kind: BorrowKind,
|
pub kind: BorrowKind,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl PreviousBorrow {
|
||||||
|
pub fn display_opt(value: &Option<Self>) -> String {
|
||||||
|
value
|
||||||
|
.as_ref()
|
||||||
|
.map(|value| value.to_string())
|
||||||
|
.unwrap_or_default()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl std::fmt::Display for PreviousBorrow {
|
||||||
|
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||||
|
let Self { location, kind } = self;
|
||||||
|
write!(f, "{location} ({kind:?})")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl<T> super::UseSharedState<T> {
|
impl<T> super::UseSharedState<T> {
|
||||||
#[cfg_attr(debug_assertions, track_caller)]
|
#[cfg_attr(debug_assertions, track_caller)]
|
||||||
#[cfg_attr(debug_assertions, inline(never))]
|
#[cfg_attr(debug_assertions, inline(never))]
|
||||||
@@ -90,7 +106,8 @@ pub mod error {
|
|||||||
#[cfg_attr(
|
#[cfg_attr(
|
||||||
debug_assertions,
|
debug_assertions,
|
||||||
error(
|
error(
|
||||||
"[{location}] {type_name} is already borrowed at [{previous_borrow:?}], so it cannot be borrowed mutably."
|
"[{location}] {type_name} is already borrowed at [{previous_borrow}], so it cannot be borrowed mutably.",
|
||||||
|
previous_borrow = super::diagnostics::PreviousBorrow::display_opt(.previous_borrow)
|
||||||
)
|
)
|
||||||
)]
|
)]
|
||||||
#[cfg_attr(
|
#[cfg_attr(
|
||||||
@@ -108,7 +125,8 @@ pub mod error {
|
|||||||
#[cfg_attr(
|
#[cfg_attr(
|
||||||
debug_assertions,
|
debug_assertions,
|
||||||
error(
|
error(
|
||||||
"[{location}] {type_name} is already borrowed mutably at [{previous_borrow:?}], so it cannot be borrowed anymore."
|
"[{location}] {type_name} is already borrowed mutably at [{previous_borrow}], so it cannot be borrowed anymore.",
|
||||||
|
previous_borrow = super::diagnostics::PreviousBorrow::display_opt(.previous_borrow)
|
||||||
)
|
)
|
||||||
)]
|
)]
|
||||||
#[cfg_attr(
|
#[cfg_attr(
|
||||||
|
|||||||
Reference in new issue
Block a user