mirror of
https://github.com/tokio-rs/tokio.git
synced 2026-09-06 00:00:10 +02:00
trace: Change Span::enter to return a guard, add Span::in_scope (#1076)
## Motivation Currently, the primary way to use a span is to use `.enter` and pass a closure to be executed under the span. While that is convenient in many settings, it also comes with two decently inconvenient drawbacks: - It breaks control flow statements like `return`, `?`, `break`, and `continue` - It require re-indenting a potentially large chunk of code if you wish it to appear under a span ## Solution This branch changes the `Span::enter` function to return a scope guard that exits the span when dropped, as in: ```rust let guard = span.enter(); // code here is within the span drop(guard); // code here is no longer within the span ``` The method previously called `enter`, which takes a closure and executes it in the span's context, is now called `Span::in_scope`, and was reimplemented on top of the new `enter` method. This is a breaking change to `tokio-trace` that will be part of the upcoming 0.2 release. Closes #1075 Signed-off-by: Eliza Weisman <[email protected]>
This commit is contained in:
@@ -44,7 +44,7 @@ fn test_always_log() {
|
||||
|
||||
let mut foo = span!(Level::TRACE, "foo");
|
||||
last(&a, "foo;");
|
||||
foo.enter(|| {
|
||||
foo.in_scope(|| {
|
||||
last(&a, "-> foo");
|
||||
|
||||
trace!({foo = 3, bar = 4}, "hello {};", "san francisco");
|
||||
|
||||
Reference in New Issue
Block a user