1use crate::ops::*;
2pub use std::rc::Rc;
3pub use std::cell::Cell;
4
5#[derive(Debug,Default)]
6pub struct WrapRc;
7defun!{ WrapRc {
8 (T) { t:T } => {Ret, @Rc<T> = Rc::new(t)};
9}}
10
11#[derive(Debug,Default)]
12pub struct UnwrapRc;
13defun!{ UnwrapRc {
14 (T) { rc:Rc<T> } => {
15 Ret, @T = Rc::try_unwrap(rc)
16 .unwrap_or_else(|_| panic!("Couldn't unwrap {}",
17 core::any::type_name::<T>()))
18 };
19}}
20
21#[derive(Debug,Default)]
22pub struct Unwrap;
23defun!{ Unwrap {
24 (T) { opt:Option<T> } => {
25 Ret, @T = opt.unwrap_or_else(|| panic!("Couldn't unwrap {}",
26 core::any::type_name::<T>()))
27 };
28}}