struct CustomSmartPointer {
    data: String,
}

impl Drop for CustomSmartPointer {
    fn drop(&mut self) {
        println!("Porzucanie CustomSmartPointer z danymi `{}`!", self.data);
    }
}

// ANCHOR: here
fn main() {
    let c = CustomSmartPointer {
        data: String::from("jakieś dane"),
    };
    println!("Utworzono CustomSmartPointer.");
    c.drop();
    println!("Wartość CustomSmartPointer została porzucona przed końcem funkcji main.");
}
// ANCHOR_END: here
