Skip to content

Nested println!() statements fail #23781

Closed
@mrmonday

Description

@mrmonday

The following code

use std::fmt;

struct Foo;
impl fmt::Debug for Foo {
    fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
        println!("<Foo as Debug>::fmt()");

        write!(fmt, "")
    }
}

fn test1() {
    let foo_str = format!("{:?}", Foo);

    println!("{}", foo_str);
}

fn test2() {
    println!("{:?}", Foo);
}

fn main() {
    // This works fine
    test1();

    // This fails
    test2();
}

Playpen: http://is.gd/VBvDk4
Fails, with the following errors:

<Foo as Debug>::fmt()

thread '<main>' panicked at 'RefCell<T> already borrowed', /home/rustbuild/src/rust-buildbot/slave/nightly-dist-rustc-linux/build/src/libcore/cell.rs:469
playpen: application terminated with error code 101

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions