firedbg-rust-debugger 1.74.1

FireDBG Debugger Engine for Rust
Documentation
use std::{rc::Rc, sync::Arc};

struct BNode {
    i: i32,
    next: Option<Box<BNode>>,
}
struct RCNode {
    i: i32,
    next: Option<Rc<RCNode>>,
}
struct RCCNode {
    i: i32,
    next: Option<Arc<RCCNode>>,
}

fn capture<T>(v: &T) {
    std::hint::black_box(v);
}

fn main() {
    let node = BNode {
        i: 1,
        next: Some(Box::new(BNode {
            i: 2,
            next: None,
        }))
    };
    capture(&node);

    let node = BNode {
        i: 1,
        next: Some(Box::new(BNode {
            i: 2,
            next: Some(Box::new(BNode {
                i: 3,
                next: None,
            })),
        }))
    };
    capture(&node);

    let dyn_box: Box<dyn std::fmt::Debug> = Box::new("hello");
    capture(&dyn_box);
    capture(&Some(dyn_box));

    let node = RCNode {
        i: 11,
        next: None,
    };
    capture(&node);

    let node = RCNode {
        i: 11,
        next: Some(Rc::new(RCNode {
            i: 22,
            next: None,
        })),
    };
    capture(&node);

    let node = RCNode {
        i: 11,
        next: Some(Rc::new(RCNode {
            i: 22,
            next: Some(Rc::new(RCNode {
                i: 33,
                next: None,
            })),
        })),
    };
    capture(&node);

    let node = RCCNode {
        i: 11,
        next: Some(Arc::new(RCCNode {
            i: 22,
            next: Some(Arc::new(RCCNode {
                i: 33,
                next: None,
            })),
        })),
    };
    capture(&node);
}