From 36015e7e251bd2302ba33a8b02d90f389d3e5abf Mon Sep 17 00:00:00 2001 From: Leo Kettmeir Date: Tue, 31 Dec 2024 06:26:11 -0800 Subject: [PATCH] fix: make Eternal::get return an Option instead (#1671) --- src/handle.rs | 19 ++++++++++--------- tests/test_api.rs | 4 +++- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/src/handle.rs b/src/handle.rs index 1c62bc7974..1c18489ec9 100644 --- a/src/handle.rs +++ b/src/handle.rs @@ -1147,16 +1147,17 @@ impl Eternal { } } - pub fn get<'s>(&self, scope: &mut HandleScope<'s, ()>) -> Local<'s, T> { + pub fn get<'s>( + &self, + scope: &mut HandleScope<'s, ()>, + ) -> Option> { unsafe { - scope - .cast_local(|sd| { - v8__Eternal__Get( - self as *const Self as *const Eternal, - sd.get_isolate_ptr(), - ) as *const T - }) - .unwrap() + scope.cast_local(|sd| { + v8__Eternal__Get( + self as *const Self as *const Eternal, + sd.get_isolate_ptr(), + ) as *const T + }) } } diff --git a/tests/test_api.rs b/tests/test_api.rs index cc7eb72bdd..06f4d493db 100644 --- a/tests/test_api.rs +++ b/tests/test_api.rs @@ -11990,14 +11990,16 @@ fn test_eternals() { let str1 = v8::String::new(&mut scope, "hello").unwrap(); assert!(eternal1.is_empty()); + assert!(eternal1.get(&mut scope).is_none()); eternal1.set(&mut scope, str1); assert!(!eternal1.is_empty()); - let str1_get = eternal1.get(&mut scope); + let str1_get = eternal1.get(&mut scope).unwrap(); assert_eq!(str1, str1_get); eternal1.clear(); assert!(eternal1.is_empty()); + assert!(eternal1.get(&mut scope).is_none()); } // Try all 'standalone' methods after isolate has dropped.