Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

core: add Collect impl for Arc<dyn Collect + ...> #1374

Merged
merged 1 commit into from
Apr 28, 2021
Merged

Conversation

hawkw
Copy link
Member

@hawkw hawkw commented Apr 27, 2021

Motivation

Users may wish to erase the type of a Collect
implementation, such as when it is dynamically constructed from a
complex parameterized type. PR #1358 added a Collect implementation
for Box<dyn Collect + Send + Sync + 'static>, allowing the use of
type-erased trait objects. In some cases, it may also be useful to share
a type-erased collector, without using Dispatch --- such as when
different sets of tracing-subscriber subscribers are layered on one
shared collector.

Solution

This branch builds on #1358 by adding an impl Collect for Arc<dyn Collect + Send + Sync + 'static>. I also added quick tests for both
Arced and Boxed collectors.

Signed-off-by: Eliza Weisman eliza@buoyant.io

Users may wish to erase the type of a `Collect`
implementation, such as when it is dynamically constructed from a
complex parameterized type. PR #1358 added a `Collect` implementation
for `Box<dyn Collect + Send + Sync + 'static>`, allowing the use of
type-erased trait objects. In some cases, it may also be useful to share
a type-erased collector, _without_ using `Dispatch` --- such as when
different sets of `tracing-subscriber` subscribers are layered on one
shared collector.

## Solution

This branch builds on #1358 by adding an `impl Collect for Arc<dyn
Collect + Send + Sync + 'static>`. I also added quick tests for both
`Arc`ed and `Box`ed collectors.

Signed-off-by: Eliza Weisman <eliza@buoyant.io>
@hawkw hawkw requested review from carllerche, davidbarsky and a team as code owners April 27, 2021 16:46
@hawkw hawkw merged commit eaaf8fd into master Apr 28, 2021
@hawkw hawkw deleted the eliza/arc-collector branch April 28, 2021 22:15
hawkw added a commit that referenced this pull request Apr 30, 2021
## Motivation (#1374)

Users may wish to erase the type of a `Subscriber`
implementation, such as when it is dynamically constructed from a
complex parameterized type. PR #1358 added a `Subscriber` implementation
for `Box<dyn Subscriber + Send + Sync + 'static>`, allowing the use of
type-erased trait objects. In some cases, it may also be useful to share
a type-erased subscriber, _without_ using `Dispatch` --- such as when
different sets of `tracing-subscriber` subscribers are layered on one
shared subscriber.

## Solution

This branch builds on #1358 by adding an `impl Subscriber for Arc<dyn
Subscriber + Send + Sync + 'static>`. I also added quick tests for both
`Arc`ed and `Box`ed subscribers.

Signed-off-by: Eliza Weisman <eliza@buoyant.io>
hawkw added a commit that referenced this pull request Apr 30, 2021
## Motivation (#1374)

Users may wish to erase the type of a `Subscriber`
implementation, such as when it is dynamically constructed from a
complex parameterized type. PR #1358 added a `Subscriber` implementation
for `Box<dyn Subscriber + Send + Sync + 'static>`, allowing the use of
type-erased trait objects. In some cases, it may also be useful to share
a type-erased subscriber, _without_ using `Dispatch` --- such as when
different sets of `tracing-subscriber` subscribers are layered on one
shared subscriber.

## Solution

This branch builds on #1358 by adding an `impl Subscriber for Arc<dyn
Subscriber + Send + Sync + 'static>`. I also added quick tests for both
`Arc`ed and `Box`ed subscribers.

Signed-off-by: Eliza Weisman <eliza@buoyant.io>
hawkw added a commit that referenced this pull request Apr 30, 2021
# 0.1.18 (April 30, 2010)

### Added

- `Subscriber` impl for `Box<dyn Subscriber + Send + Sync + 'static>`
  ([#1358])
- `Subscriber` impl for `Arc<dyn Subscriber + Send + Sync + 'static>`
  ([#1374])
- Symmetric `From` impls for existing `Into` impls on `Current` and
  `Option<Id>` ([#1335])
- `Attributes::fields` accessor that returns the set of fields defined
  on a span's `Attributes` ([#1331])

Thanks to @Folyd for contributing to this release!

[#1358]: #1358
[#1374]: #1374
[#1335]: #1335
[#1331]: #1331
hawkw added a commit that referenced this pull request Apr 30, 2021
# 0.1.18 (April 30, 2010)

### Added

- `Subscriber` impl for `Box<dyn Subscriber + Send + Sync + 'static>`
  ([#1358])
- `Subscriber` impl for `Arc<dyn Subscriber + Send + Sync + 'static>`
  ([#1374])
- Symmetric `From` impls for existing `Into` impls on `Current` and
  `Option<Id>` ([#1335])
- `Attributes::fields` accessor that returns the set of fields defined
  on a span's `Attributes` ([#1331])

Thanks to @Folyd for contributing to this release!

[#1358]: #1358
[#1374]: #1374
[#1335]: #1335
[#1331]: #1331
hawkw added a commit that referenced this pull request Apr 30, 2021
# 0.1.26 (April 30, 2021)

### Fixed

- **attributes**: Compatibility between `#[instrument]` and `async-trait`
  v0.1.43 and newer ([#1228])
- Several documentation fixes ([#1305], [#1344])
### Added

- `Subscriber` impl for `Box<dyn Subscriber + Send + Sync + 'static>`
  ([#1358])
- `Subscriber` impl for `Arc<dyn Subscriber + Send + Sync + 'static>`
  ([#1374])
- Symmetric `From` impls for existing `Into` impls on `span::Current`,
  `Span`, and `Option<Id>` ([#1335], [#1338])
- `From<EnteredSpan>` implementation for `Option<Id>`, allowing
  `EnteredSpan` to be used in a `span!` macro's `parent:` field ([#1325])
- `Attributes::fields` accessor that returns the set of fields defined
  on a span's `Attributes` ([#1331])

Thanks to @Folyd, @nightmared, and new contributors @rmsc and @Fishrock123 for
contributing to this release!

[#1227]: #1228
[#1305]: #1305
[#1325]: #1325
[#1338]: #1338
[#1344]: #1344
[#1358]: #1358
[#1374]: #1374
[#1335]: #1335
[#1331]: #1331
hawkw added a commit that referenced this pull request Apr 30, 2021
# 0.1.26 (April 30, 2021)

### Fixed

- **attributes**: Compatibility between `#[instrument]` and `async-trait`
  v0.1.43 and newer ([#1228])
- Several documentation fixes ([#1305], [#1344])
### Added

- `Subscriber` impl for `Box<dyn Subscriber + Send + Sync + 'static>`
  ([#1358])
- `Subscriber` impl for `Arc<dyn Subscriber + Send + Sync + 'static>`
  ([#1374])
- Symmetric `From` impls for existing `Into` impls on `span::Current`,
  `Span`, and `Option<Id>` ([#1335], [#1338])
- `From<EnteredSpan>` implementation for `Option<Id>`, allowing
  `EnteredSpan` to be used in a `span!` macro's `parent:` field ([#1325])
- `Attributes::fields` accessor that returns the set of fields defined
  on a span's `Attributes` ([#1331])

Thanks to @Folyd, @nightmared, and new contributors @rmsc and @Fishrock123 for
contributing to this release!

[#1227]: #1228
[#1305]: #1305
[#1325]: #1325
[#1338]: #1338
[#1344]: #1344
[#1358]: #1358
[#1374]: #1374
[#1335]: #1335
[#1331]: #1331
kaffarell pushed a commit to kaffarell/tracing that referenced this pull request May 22, 2024
# 0.1.18 (April 30, 2010)

### Added

- `Subscriber` impl for `Box<dyn Subscriber + Send + Sync + 'static>`
  ([tokio-rs#1358])
- `Subscriber` impl for `Arc<dyn Subscriber + Send + Sync + 'static>`
  ([tokio-rs#1374])
- Symmetric `From` impls for existing `Into` impls on `Current` and
  `Option<Id>` ([tokio-rs#1335])
- `Attributes::fields` accessor that returns the set of fields defined
  on a span's `Attributes` ([tokio-rs#1331])

Thanks to @Folyd for contributing to this release!

[tokio-rs#1358]: tokio-rs#1358
[tokio-rs#1374]: tokio-rs#1374
[tokio-rs#1335]: tokio-rs#1335
[tokio-rs#1331]: tokio-rs#1331
kaffarell pushed a commit to kaffarell/tracing that referenced this pull request May 22, 2024
# 0.1.26 (April 30, 2021)

### Fixed

- **attributes**: Compatibility between `#[instrument]` and `async-trait`
  v0.1.43 and newer ([tokio-rs#1228])
- Several documentation fixes ([tokio-rs#1305], [tokio-rs#1344])
### Added

- `Subscriber` impl for `Box<dyn Subscriber + Send + Sync + 'static>`
  ([tokio-rs#1358])
- `Subscriber` impl for `Arc<dyn Subscriber + Send + Sync + 'static>`
  ([tokio-rs#1374])
- Symmetric `From` impls for existing `Into` impls on `span::Current`,
  `Span`, and `Option<Id>` ([tokio-rs#1335], [tokio-rs#1338])
- `From<EnteredSpan>` implementation for `Option<Id>`, allowing
  `EnteredSpan` to be used in a `span!` macro's `parent:` field ([tokio-rs#1325])
- `Attributes::fields` accessor that returns the set of fields defined
  on a span's `Attributes` ([tokio-rs#1331])

Thanks to @Folyd, @nightmared, and new contributors @rmsc and @Fishrock123 for
contributing to this release!

[tokio-rs#1227]: tokio-rs#1228
[tokio-rs#1305]: tokio-rs#1305
[tokio-rs#1325]: tokio-rs#1325
[tokio-rs#1338]: tokio-rs#1338
[tokio-rs#1344]: tokio-rs#1344
[tokio-rs#1358]: tokio-rs#1358
[tokio-rs#1374]: tokio-rs#1374
[tokio-rs#1335]: tokio-rs#1335
[tokio-rs#1331]: tokio-rs#1331
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant