diff options
| author | Corey Farwell <coreyf@rwell.org> | 2017-09-23 00:29:20 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2017-09-23 00:29:20 -0400 |
| commit | 21c0dfce97ce2f35aaca3f87cdffadd4fa729321 (patch) | |
| tree | 3a00b45e584ff919dad72974b23c06a0e3988f7f /src/libcore | |
| parent | 8915683c540a65ffd8384e3f830e7509c7337749 (diff) | |
| parent | f9d92d219d266c3161367cc694743e9c0e6d55c7 (diff) | |
| download | rust-21c0dfce97ce2f35aaca3f87cdffadd4fa729321.tar.gz rust-21c0dfce97ce2f35aaca3f87cdffadd4fa729321.zip | |
Rollup merge of #44770 - dtolnay:borrowed, r=sfackler
Less confusing placeholder when RefCell is exclusively borrowed
Based on ExpHP's comment in [*RefCell.borrow_mut get strange result*](https://users.rust-lang.org/t/refcell-borrow-mut-get-strange-result/12994):
> it would perhaps be nicer if it didn't put something that could be misinterpreted as a valid string value
The previous Debug implementation would show:
RefCell { value: "<borrowed>" }
The new one is:
RefCell { value: <borrowed> }
Diffstat (limited to 'src/libcore')
| -rw-r--r-- | src/libcore/fmt/mod.rs | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/libcore/fmt/mod.rs b/src/libcore/fmt/mod.rs index cf6262bda97..b84a1deb611 100644 --- a/src/libcore/fmt/mod.rs +++ b/src/libcore/fmt/mod.rs @@ -1700,8 +1700,18 @@ impl<T: ?Sized + Debug> Debug for RefCell<T> { .finish() } Err(_) => { + // The RefCell is mutably borrowed so we can't look at its value + // here. Show a placeholder instead. + struct BorrowedPlaceholder; + + impl Debug for BorrowedPlaceholder { + fn fmt(&self, f: &mut Formatter) -> Result { + f.write_str("<borrowed>") + } + } + f.debug_struct("RefCell") - .field("value", &"<borrowed>") + .field("value", &BorrowedPlaceholder) .finish() } } |
