Skip to content

Commit d69ec5e

Browse files
committed
Ensure that .join().unwrap() works
Make `Box<Any + Send>` implement `Debug`. Fixes #21291
1 parent 88fc543 commit d69ec5e

File tree

2 files changed

+27
-0
lines changed

2 files changed

+27
-0
lines changed

src/liballoc/boxed.rs

+10
Original file line numberDiff line numberDiff line change
@@ -275,6 +275,16 @@ impl<T: fmt::Debug + ?Sized> fmt::Debug for Box<T> {
275275
}
276276
}
277277

278+
// Ensure that the result of e.g. joining a thread can be printed and
279+
// hence used with `unwrap`. May eventually no longer be needed if
280+
// dispatch works with upcasting.
281+
#[stable(feature = "rust1", since = "1.0.0")]
282+
impl fmt::Debug for Box<Any + Send> {
283+
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
284+
fmt::Debug::fmt("Box<Any>", f)
285+
}
286+
}
287+
278288
#[stable(feature = "rust1", since = "1.0.0")]
279289
impl<T> fmt::Pointer for Box<T> {
280290
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {

src/test/run-pass/issue-21291.rs

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
// Copyright 2015 The Rust Project Developers. See the COPYRIGHT
2+
// file at the top-level directory of this distribution and at
3+
// http://rust-lang.org/COPYRIGHT.
4+
//
5+
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6+
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7+
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8+
// option. This file may not be copied, modified, or distributed
9+
// except according to those terms.
10+
11+
// Regression test for unwrapping the result of `join`, issue #21291
12+
13+
use std::thread;
14+
15+
fn main() {
16+
thread::spawn(|| {}).join().unwrap()
17+
}

0 commit comments

Comments
 (0)