Add Scope::get.

This commit is contained in:
Stephen Chung
2022-05-24 16:05:17 +08:00
parent 07d3dd6882
commit 52bb6e68e8
2 changed files with 28 additions and 3 deletions

View File

@@ -511,9 +511,33 @@ impl Scope<'_> {
}
self
}
/// Get a reference to an entry in the [`Scope`].
///
/// If the entry by the specified name is not found, [`None`] is returned.
///
/// # Example
///
/// ```
/// use rhai::Scope;
///
/// let mut my_scope = Scope::new();
///
/// my_scope.push("x", 42_i64);
///
/// let value = my_scope.get("x").expect("x should exist");
///
/// assert_eq!(value.as_int().unwrap(), 42);
///
/// assert!(my_scope.get("z").is_none());
/// ```
#[inline(always)]
#[must_use]
pub fn get(&self, name: &str) -> Option<&Dynamic> {
self.get_index(name).map(|(index, _)| &self.values[index])
}
/// Get a mutable reference to an entry in the [`Scope`].
///
/// If the entry by the specified name is not found, of if it is read-only,
/// If the entry by the specified name is not found, or if it is read-only,
/// [`None`] is returned.
///
/// # Example
@@ -531,8 +555,8 @@ impl Scope<'_> {
///
/// assert_eq!(my_scope.get_value::<i64>("x").expect("x should exist"), 123);
///
/// my_scope.push_constant("Z", 1_i64);
/// assert!(my_scope.get_mut("Z").is_none());
/// my_scope.push_constant("z", 1_i64);
/// assert!(my_scope.get_mut("z").is_none());
/// ```
#[inline]
#[must_use]