61644e63fbce919dbbb41a96918c9fad9616df23
Changes the public signature from `Vec<String>` (owned) to `&[impl AsRef<str>]` so callers can re-issue the same call repeatedly without cloning at the call site. The bench''s steady-state loop now passes `&tags` instead of `tags.clone()`; the CLI subcommand passes the parsed `&items`; the integration test passes `&["Area001.Pump001.Speed"]` straight from a string literal slice. Honest perf note: this is an ergonomics change, not a measurable speedup. The method still has to materialise an owned `Vec<String>` internally because prost''s generated `ReadBulkCommand` field requires it, so the total heap traffic per call is unchanged. Across two 30-second, 5-way concurrent bench runs at bulkSize=6: pre-fix (.clone() at caller): 145.35 calls/sec, p99 62.31 ms post-fix run 1 (&tags): 165.98 calls/sec, p99 40.65 ms post-fix run 2 (&tags): 146.19 calls/sec, p99 60.04 ms Run-to-run variance (145-166) dominates any signal from the fix. Solo Rust release stayed at 261-267 calls/sec across both API shapes, confirming the bench is gateway-bound under 5-way contention rather than client-allocation-bound. The change is kept because the borrowed slice is the idiomatic Rust API shape for "list of items the callee does not need to take ownership of", and it cleans up the explicit clone from the bench's inner loop. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Description
No description provided
Languages
Java
49.4%
C#
39.3%
Rust
3%
Python
2.9%
Go
2.3%
Other
3.1%