From 010e34f63756ae7b83584b5f9cd79a85308b52eb Mon Sep 17 00:00:00 2001 From: Mark Swanson Date: Mon, 30 May 2016 16:09:40 -0400 Subject: [PATCH 1/2] lookup() and lookup_mut() lifetime enhancements. Rationale: - The path has nothing to do with the result. - The path has no need to live as long as the Value/self. - In some cases it can be hard to actually build a path that meets the same lifetime requirements as the Value or String slice result. --- src/lib.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 21b3e21..6e74421 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -180,7 +180,7 @@ impl Value { /// let no_bar = value.lookup("test.bar"); /// assert_eq!(no_bar.is_none(), true); /// ``` - pub fn lookup<'a>(&'a self, path: &'a str) -> Option<&'a Value> { + pub fn lookup<'a, 'b>(&'a self, path: &'b str) -> Option<&'a Value> { let ref path = match Parser::new(path).lookup() { Some(path) => path, None => return None, @@ -240,7 +240,7 @@ impl Value { /// let result = value.lookup_mut("test.foo").unwrap(); /// assert_eq!(result.as_str().unwrap(), "foo"); /// ``` - pub fn lookup_mut(&mut self, path: &str) -> Option<&mut Value> { + pub fn lookup_mut<'a, 'b>(&'a mut self, path: &'b str) -> Option<&'a mut Value> { let ref path = match Parser::new(path).lookup() { Some(path) => path, None => return None, From 3639e62a3b3dbe0b9830810192a1ef61549e727e Mon Sep 17 00:00:00 2001 From: Mark Swanson Date: Tue, 31 May 2016 10:20:43 -0400 Subject: [PATCH 2/2] Rely on lifetime elision. --- src/lib.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 6e74421..79a015d 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -180,7 +180,7 @@ impl Value { /// let no_bar = value.lookup("test.bar"); /// assert_eq!(no_bar.is_none(), true); /// ``` - pub fn lookup<'a, 'b>(&'a self, path: &'b str) -> Option<&'a Value> { + pub fn lookup(&self, path: &str) -> Option<&Value> { let ref path = match Parser::new(path).lookup() { Some(path) => path, None => return None, @@ -240,7 +240,7 @@ impl Value { /// let result = value.lookup_mut("test.foo").unwrap(); /// assert_eq!(result.as_str().unwrap(), "foo"); /// ``` - pub fn lookup_mut<'a, 'b>(&'a mut self, path: &'b str) -> Option<&'a mut Value> { + pub fn lookup_mut(&mut self, path: &str) -> Option<&mut Value> { let ref path = match Parser::new(path).lookup() { Some(path) => path, None => return None,