use core::fmt::Debug; use rusteval::{Interactive, InteractiveRoot}; use std::rc::Rc; #[derive(Interactive, Debug, Default)] struct Inner { field: u32, } #[derive(Interactive, Debug, Default)] struct Outer { inner: Inner, } #[derive(InteractiveRoot, Debug, Default)] struct Root { outer_box: Box, outer_rc: Rc, } #[test] fn test_box_eval() { let mut root = Root::default(); assert_eq!(root.eval_to_string("outer_box.inner"), "Inner { field: 0 }") } #[test] fn test_box_access() { let mut root = Root::default(); assert_eq!(root.eval_to_string("outer_box.inner.field"), "0") } #[test] fn test_rc_eval() { let mut root = Root::default(); assert_eq!(root.eval_to_string("outer_rc.inner"), "Inner { field: 0 }") } #[test] fn test_rc_access() { let mut root = Root::default(); assert_eq!(root.eval_to_string("outer_rc.inner.field"), "0") }