{"record":{"id":"e9fcccb72233bd7f","repo":"slint-ui/slint","slug":"failed-to-create-weak-reference","errorCode":null,"errorMessage":"Failed to create weak reference","messagePattern":"Failed to create weak reference","errorType":"exception","errorClass":"napi::Error","httpStatus":null,"severity":"error","filePath":"api/node/rust/weak_ref.rs","lineNumber":65,"sourceCode":"///\n/// The reference doesn't prevent garbage collection.\n/// If V8 collects the value,\n/// [`get_unknown`](WeakValueRef::get_unknown) returns `None`.\npub struct WeakValueRef {\n    raw_ref: napi::sys::napi_ref,\n    raw_env: napi::sys::napi_env,\n}\n\nimpl WeakValueRef {\n    /// Create a weak reference to any JS value.\n    pub fn new<'a, T: JsValue<'a>>(env: &Env, value: &T) -> Result<Self> {\n        let raw_env = env.raw();\n        let raw_val = value.raw();\n        let mut raw_ref = std::ptr::null_mut();\n        // Safety: raw_env and raw_val are valid handles from napi-rs.\n        let status = unsafe { napi::sys::napi_create_reference(raw_env, raw_val, 0, &mut raw_ref) };\n        if status != napi::sys::Status::napi_ok {\n            return Err(napi::Error::new(\n                napi::Status::from(status),\n                \"Failed to create weak reference\",\n            ));\n        }\n        Ok(Self { raw_ref, raw_env })\n    }\n\n    /// Get the value back,\n    /// or `None` if it was garbage-collected.\n    pub fn get_unknown(&self) -> Option<Unknown<'_>> {\n        let mut value = std::ptr::null_mut();\n        // Safety: raw_env and raw_ref are valid (created in new, deleted in drop).\n        let status =\n            unsafe { napi::sys::napi_get_reference_value(self.raw_env, self.raw_ref, &mut value) };\n        if status != napi::sys::Status::napi_ok || value.is_null() {\n            return None;\n        }\n        // Safety: value is a live JS handle from the reference.","sourceCodeStart":47,"sourceCodeEnd":83,"githubUrl":"https://github.com/slint-ui/slint/blob/3fd8f2ec03c2aa8a95d5f4b9daa299c7b8bf4016/api/node/rust/weak_ref.rs#L47-L83","documentation":"Error \"Failed to create weak reference\" thrown in slint-ui/slint.","triggerScenarios":"Thrown at api/node/rust/weak_ref.rs:65 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Ensure the referenced object is still alive when creating the weak reference.","Avoid creating weak references to already-garbage-collected values."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"3fd8f2ec03c2aa8a95d5f4b9daa299c7b8bf4016","analyzedAt":"2026-08-19T23:23:16.610Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}