rust refcell, and asmut
use std::sync::{Arc, Mutex, Condvar}; use std::thread; use std::cell::RefCell; #[derive(Debug)] struct D{ name: RefCell<String>, data: Vec<i32> } #[derive(Debug)] struct A{ title: String, data: i32 } fn c(c:&D){ *c.name.borrow_mut() = "skfjds1234f".to_string(); // c.borrow_mut().name = "sdsdf".to_string(); // println!("{:?}", &c); } fn dd<T:AsMut<A>>(c:&mut T){ c.as_mut().title = "nfilnaletitle".to_string(); } impl std::convert::AsMut<A> for A { fn as_mut(&mut self) -> &mut A { &mut *self } } fn aaaaa(c:&mut A) { c.as_mut().title = "hahaha".to_string(); } fn main(){ let a = D {name: RefCell::new("a".to_string()), data: vec![1,2,3]}; // println!("{:?}", &a); // *a.name.borrow_mut() = "sjkff".to_string(); // c(&a); // c(RefCell::new(a)); // println!("{:?}", &a); // let mut b = Box::new(A{title:"other".to_string(), data: 100_i32}); let mut c111 = A{title:"oc_directtrait".to_string(), data: 123456_i32}; // dd(&mut b); // dd(&mut c); aaaaa(&mut c111); // println!("{:?}", &b); println!("{:?}", &c111); }