diff --git a/opentelemetry/CHANGELOG.md b/opentelemetry/CHANGELOG.md index 5ea43ff87a..7192dd21f6 100644 --- a/opentelemetry/CHANGELOG.md +++ b/opentelemetry/CHANGELOG.md @@ -9,6 +9,7 @@ - Bug Fix: `InstrumentationScope` implementation for `PartialEq` and `Hash` fixed to include Attributes also. - *Breaking* Changed value type of `Baggage` from `Value` to `StringValue` - Updated `Baggage` constants to reflect latest standard (`MAX_KEY_VALUE_PAIRS` - 180 -> 64, `MAX_BYTES_FOR_ONE_PAIR` - removed) and increased insert performance see #[2284](https://github.com/open-telemetry/opentelemetry-rust/pull/2284). +- *Breaking* Align `Baggage.remove()` signature with `.get()` to take the key as a reference ## 0.28.0 diff --git a/opentelemetry/src/baggage.rs b/opentelemetry/src/baggage.rs index 9521a53898..75d97a3f14 100644 --- a/opentelemetry/src/baggage.rs +++ b/opentelemetry/src/baggage.rs @@ -193,8 +193,8 @@ impl Baggage { /// Removes a name from the baggage, returning the value /// corresponding to the name if the pair was previously in the map. - pub fn remove>(&mut self, key: K) -> Option<(StringValue, BaggageMetadata)> { - self.inner.remove(&key.into()) + pub fn remove>(&mut self, key: K) -> Option<(StringValue, BaggageMetadata)> { + self.inner.remove(key.as_ref()) } /// Returns the number of attributes for this baggage @@ -584,4 +584,25 @@ mod tests { assert!(b.insert("c", StringValue::from("..")).is_none()); // exceeds MAX_LEN_OF_ALL_PAIRS assert_eq!(b.insert("c", StringValue::from("!")).unwrap(), ".".into()); // replaces existing } + + #[test] + fn test_crud_operations() { + let mut baggage = Baggage::default(); + assert!(baggage.is_empty()); + + // create + baggage.insert("foo", "1"); + assert_eq!(baggage.len(), 1); + + // get + assert_eq!(baggage.get("foo"), Some(&StringValue::from("1"))); + + // update + baggage.insert("foo", "2"); + assert_eq!(baggage.get("foo"), Some(&StringValue::from("2"))); + + // delete + baggage.remove("foo"); + assert!(baggage.is_empty()); + } }