Skip to content

feat: impl<T: Collector> Collector for std::sync::Arc<T> - #273

Merged
mxinden merged 2 commits into
prometheus:masterfrom
hanabi1224:impl-collector-for-arc
Aug 14, 2025
Merged

feat: impl<T: Collector> Collector for std::sync::Arc<T>#273
mxinden merged 2 commits into
prometheus:masterfrom
hanabi1224:impl-collector-for-arc

Conversation

@hanabi1224

@hanabi1224 hanabi1224 commented Jul 22, 2025

Copy link
Copy Markdown
Contributor

This PR implements Collector for std::sync::Arc<T> where T: Collector. This is useful for registering an Arc pointer of the metrics collector instead of wrapping collector fields with Arc

@hanabi1224
hanabi1224 marked this pull request as ready for review July 22, 2025 11:23

@mxinden mxinden left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Change looks good to me. Thanks.

You would need to add a git --signoff to your commit in order for us to merge.

Signed-off-by: hanabi1224 <harlowmoo@gmail.com>
Signed-off-by: hanabi1224 <harlowmoo@gmail.com>
@hanabi1224
hanabi1224 force-pushed the impl-collector-for-arc branch from 80fe980 to 76d7b30 Compare August 14, 2025 08:29
@mxinden
mxinden merged commit 970606a into prometheus:master Aug 14, 2025
10 checks passed
@hanabi1224
hanabi1224 deleted the impl-collector-for-arc branch August 14, 2025 08:42
eleboucher pushed a commit to eleboucher/towonel that referenced this pull request Apr 18, 2026
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [prometheus-client](https://github.com/prometheus/client_rust) | workspace.dependencies | minor | `0.22` → `0.24` |

---

### Release Notes

<details>
<summary>prometheus/client_rust (prometheus-client)</summary>

### [`v0.24.1`](https://github.com/prometheus/client_rust/blob/HEAD/CHANGELOG.md#0241)

[Compare Source](prometheus/client_rust@v0.24.0...v0.24.1)

##### Added

- `EncodeGaugeValue` is implemented for `usize` and `isize`, and
  `EncodeCounterValue` is implemented for `usize`. See [PR 282].

##### Fixed

- `EncodeGaugeValue`, `EncodeCounterValue` and `EncodeExemplarValue` now use
  fewer `as` casts in their implementation. This caught an issue where
  `EncodeGaugeValue` would not error when encoding some `u64`s that don't fit
  in a `i64`. See [PR 281].
- Filter out empty metric families, to match the go client. See [PR 279].
- `Histogram` now exposes `count()` and `sum()` methods when the `test-util`
  feature is enabled. See [PR 242].
- `Family` now exposes a `contains()` method when the `test-util` feature
  is enabled. See [PR 245].
- `Family` now exposes `len()` and `is_empty()` methods when the
  `test-util` feature is enabled. See [PR 246].

[PR 279]: prometheus/client_rust#279

[PR 281]: prometheus/client_rust#281

[PR 242]: prometheus/client_rust#242

[PR 245]: prometheus/client_rust#245

[PR 246]: prometheus/client_rust#246

[PR 281]: prometheus/client_rust#281

[PR 282]: prometheus/client_rust#282

### [`v0.24.0`](https://github.com/prometheus/client_rust/blob/HEAD/CHANGELOG.md#0240)

[Compare Source](prometheus/client_rust@v0.23.1...v0.24.0)

##### Added

- `EncodeLabelSet` is now implemented for tuples `(A: EncodeLabelSet, B: EncodeLabelSet)`.
  See [PR 257].

- `Family::get_or_create_owned` can access a metric in a labeled family. This
  method avoids the risk of runtime deadlocks at the expense of creating an
  owned type. See [PR 244].

- `impl<T: Collector> Collector for std::sync::Arc<T>`.
  See [PR 273].

[PR 244]: prometheus/client_rust#244

[PR 257]: prometheus/client_rust#257

[PR 273]: prometheus/client_rust#273

##### Changed

- `EncodeLabelSet::encode()` now accepts a mutable reference to its encoder parameter.
- Exemplar timestamps can now be passed, which are required for `convert_classic_histograms_to_nhcb: true`
  in Prometheus scraping. See [PR 276].

[PR 276]: prometheus/client_rust#276

### [`v0.23.1`](https://github.com/prometheus/client_rust/blob/HEAD/CHANGELOG.md#0231)

[Compare Source](prometheus/client_rust@v0.23.0...v0.23.1)

##### Changed

- `Histogram::new` now accepts an `IntoIterator` argument, rather than an `Iterator`.
  See [PR 243].

[PR 243]: prometheus/client_rust#243

### [`v0.23.0`](https://github.com/prometheus/client_rust/blob/HEAD/CHANGELOG.md#0230)

[Compare Source](prometheus/client_rust@v0.22.3...v0.23.0)

##### Changed

- `ConstCounter::new` now requires specifying the type of literal arguments, like this: `ConstCounter::new(42u64);`.
  See [PR 173].

- Update `prost` dependencies to `v0.12`.
  See [PR 198].

- Implement `Atomic<u64>` for `AtomicU64` for gauges.
  See [PR 226].

- Implement `EnableLabelValue` for `bool`.
  See [PR 237]

[PR 173]: prometheus/client_rust#173

[PR 198]: prometheus/client_rust#198

[PR 226]: prometheus/client_rust#226

[PR 237]: prometheus/client_rust#237

##### Added

- Support `i32`/`f32` for `Gauge` and `u32`/`f32` for `Counter`/`CounterWithExemplar`.
  See [PR 173] and [PR 216].

- Supoort `Arc<String>` for `EncodeLabelValue`.
  See [PR 217].

- Add `histogram::exponential_buckets_range`.
  See [PR 233].

- Added `get` method to `Family`.
  See [PR 234].

[PR 173]: prometheus/client_rust#173

[PR 216]: prometheus/client_rust#216

[PR 217]: prometheus/client_rust#217

[PR 233]: prometheus/client_rust#233

[PR 234]: prometheus/client_rust#234

##### Fixed

- Don't prepend `,` when encoding empty family label set.
  See [PR 175].

[PR 175]: prometheus/client_rust#175

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMDEuMSIsInVwZGF0ZWRJblZlciI6IjQzLjEwMS4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJ0eXBlL21pbm9yIl19-->

Reviewed-on: https://git.erwanleboucher.dev/eleboucher/towonel/pulls/7
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

2 participants