From 636d79f50e3b63ce06e9b403515c4ddc05adb678 Mon Sep 17 00:00:00 2001 From: Corey Farwell Date: Sat, 4 Jul 2015 16:05:54 -0700 Subject: [PATCH] Implement std::borrow::Borrow for Atom I want to be able to use connect() on Atoms, which requires Borrow be implemented --- src/atom/mod.rs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/atom/mod.rs b/src/atom/mod.rs index 31ec94a..532f525 100644 --- a/src/atom/mod.rs +++ b/src/atom/mod.rs @@ -11,6 +11,7 @@ use phf::OrderedSet; +use std::borrow::Borrow; use std::fmt; use std::mem; use std::ops; @@ -303,6 +304,13 @@ impl Ord for Atom { } } +impl Borrow for Atom { + fn borrow(&self) -> &str { + &self + } +} + + #[cfg(test)] mod bench; @@ -522,4 +530,12 @@ mod tests { let atom = Atom::from_slice("foobar"); let _: &str = &atom; } + + #[test] + fn ensure_borrow() { + // Ensure std::borrow::Borrow is implemented + let atoms = vec![Atom::from_slice("foo"), Atom::from_slice("bar")]; + let joined_atoms = atoms.connect(" "); + assert_eq!(joined_atoms, "foo bar"); + } }