Skip to content

[stable] A macro that allows you to implement code that will be automatically executed after the function code has finished, be it the end of the function or even a panic state.

License

Apache-2.0, Apache-2.0 licenses found

Licenses found

Apache-2.0
LICENSE
Apache-2.0
LICENSE_APACHE
Notifications You must be signed in to change notification settings

clucompany/drop_code

[drop_code]

(A macro that allows you to implement code that will be automatically executed after the function code has finished, be it the end of the function or even a panic state.)

Usage

Add this to your Cargo.toml:

[dependencies]
drop_code = "1.0.1"

and this to your source code:

use drop_code::drop_code;

How does this work?

The drop_code macro generates a hidden structure and defines the code for the Drop trait, the user can pass any data to the structure to create more complex code. The Drop trait mechanism ensures that critical operations are executed when an object is destroyed, making it easier to reliably handle important code in Rust applications, but note that the order of code execution is determined by Rust's rules and conventions. Note that this code is executed even during a panic, but only if you have not disabled stack unwinding.

Example

use drop_code::drop_code;

#[allow(unreachable_code)]
fn main() {
	drop_code! {
		println!("Code that must be executed in any situation."); // 3
	}
	
	println!("your code"); // 1
	panic!("panic info"); // 2
}
See all

License

This project has a single license (LICENSE-APACHE-2.0).

uproject  Copyright (c) 2022-2024 #UlinProject

 (Denis Kotlyarov).


Apache License

apache2  Licensed under the Apache License, Version 2.0.



About

[stable] A macro that allows you to implement code that will be automatically executed after the function code has finished, be it the end of the function or even a panic state.

Topics

Resources

License

Apache-2.0, Apache-2.0 licenses found

Licenses found

Apache-2.0
LICENSE
Apache-2.0
LICENSE_APACHE

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Languages