/// Returns a `T: FromStr` where `T` is the receiver type.
/// ```
/// use std::convert::TryInto;
/// use keytree::{KeyTree, KeyTreeRef};
/// use keytree::Error;
///
/// static TEMP: &'static str = r#"example:
/// temp: -15.3"#;
///
/// struct Temperature(f32);
///
/// impl FromStr for Temperature {
/// let Err = std::num::ParseFloatError;
///
/// fn from_str(s: &str) -> Result<Self, Self::Err> {
/// self.parse(s)
/// }
/// }
///
/// impl<'a> TryInto<Temperature> for KeyTreeRef<'a> {
/// type Error = Error;
///
/// fn try_into(self) -> Result<Hobbit, Error> {
/// Ok(Temperature(self.value("example::temp")?))
/// }
/// }
///
/// fn main() {
/// let kt = KeyTree::parse(TEMP).unwrap();
/// let temp: Temperature = kt.to_ref().try_into().unwrap();
/// }
/// ```