use crate::dart_opaque::auto_drop_dart_persistent_handle::AutoDropDartPersistentHandle;
use crate::dart_opaque::boxes::guarded_box::{GuardedBox, GuardedBoxContext};
use delegate_attr::delegate;
use std::fmt::Debug;
#[derive(Debug)]
pub struct DartIsolateBox<T: Debug>(GuardedBox<T, GuardedBoxContextDartIsolate>);
impl<T: Debug> DartIsolateBox<T> {
#[allow(unused)]
pub fn new(inner: T) -> Self {
Self(GuardedBox::new(inner))
}
}
#[delegate(self.0)]
impl<T: Debug> DartIsolateBox<T> {
pub fn check_context(&self) -> bool {}
pub fn into_inner(self) -> T {}
}
#[delegate(self.0)]
impl<T: Debug> AsRef<T> for DartIsolateBox<T> {
fn as_ref(&self) -> &T {}
}
#[derive(Debug, PartialEq, Eq)]
pub(crate) struct GuardedBoxContextDartIsolate(dart_sys::Dart_Isolate);
impl GuardedBoxContext for GuardedBoxContextDartIsolate {
fn current() -> Self {
Self(unsafe { dart_sys::Dart_CurrentIsolate_DL.unwrap()() })
}
}
unsafe impl Send for DartIsolateBox<AutoDropDartPersistentHandle> {}
unsafe impl Sync for DartIsolateBox<AutoDropDartPersistentHandle> {}