Crates.io | fun_time |
lib.rs | fun_time |
version | 0.3.4 |
source | src |
created_at | 2022-12-23 22:28:51.946203 |
updated_at | 2024-01-18 08:09:31.636469 |
description | fun_time is a simple Rust library that allows you to easily time your function calls with a simple attribute! |
homepage | |
repository | https://github.com/stevenliebregt/fun_time |
max_upload_size | |
id | 744751 |
size | 9,216 |
fun_time is a simple Rust library that allows you to easily time your function calls with a simple attribute!
#[fun_time(message = "Heavy calculations on: {a_value}")]
fn some_cool_function(a_value: String) -> usize {
a_value.len()
}
fn main() {
let my_value_length = some_cool_function(String::from("Hello, world."));
}
The above will print Starting: Heavy calculations on: Hello, world.
when the function starts, and Heavy calculations on: Hello, world.: Done in <duration>
on completion.
There are various attributes that allow you to configure the behavior of the fun_time
attribute.
message
allows you to set a message that will be printed when starting, and when done, the message is passed directly to the format!
macro, so the arguments to the function can be used in the message (provided they have Debug
or Display
).when
allows you to configure when the timing should be collected. The possible values for this are: "always"
which
as the name might suggest will always collect timing information, and "debug"
which will only collect when
cfg!(debug_assertions)
evaluates to true
.give_back
is a flag that makes it so the wrapped function will now return the elapsed time instead of printing it.
For this it modifies the return type from for example: -> &'a str
to -> (&'a str, std::time::Duration)
. This
allows you to handle printing or storing the timing information.reporting
(can not be used in combination with give_back) determines how the reporting is done. The possible
options are: "println"
which will print to stdout using println!
. The "log"
option is only available when
the log
feature is used. This will use the log crate with info!
level logs by default, this can be affected by the level
option.level
Set the level for the log messages, can by any option that can be parsed by the log::Level
enum.The reported messages are formatted as follows:
Start message: "Starting: YOUR_MESSAGE_HERE"
Done message: "YOUR_MESSAGE_HERE: Done in DURATION"