diff --git a/crates/toml_edit/src/item.rs b/crates/toml_edit/src/item.rs index 601c2358..75bfcdc1 100644 --- a/crates/toml_edit/src/item.rs +++ b/crates/toml_edit/src/item.rs @@ -342,6 +342,18 @@ impl FromStr for Item { } } +impl<'b> From<&'b Item> for Item { + fn from(s: &'b Item) -> Self { + s.clone() + } +} + +impl> From for Item { + fn from(s: V) -> Self { + Item::Value(s.into()) + } +} + #[cfg(feature = "display")] impl std::fmt::Display for Item { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { diff --git a/crates/toml_edit/src/table.rs b/crates/toml_edit/src/table.rs index 0238b2b7..c90298f5 100644 --- a/crates/toml_edit/src/table.rs +++ b/crates/toml_edit/src/table.rs @@ -442,17 +442,17 @@ impl std::fmt::Display for Table { } } -impl, V: Into> Extend<(K, V)> for Table { +impl, V: Into> Extend<(K, V)> for Table { fn extend>(&mut self, iter: T) { for (key, value) in iter { let key = key.into(); - let value = Item::Value(value.into()); + let value = value.into(); self.items.insert(key, value); } } } -impl, V: Into> FromIterator<(K, V)> for Table { +impl, V: Into> FromIterator<(K, V)> for Table { fn from_iter(iter: I) -> Self where I: IntoIterator,