Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- use std::cell::{Ref, RefCell, RefMut};
- use std::rc::Rc;
- #[derive(Clone)]
- struct Servizio {
- inner: Rc<RefCell<ServizioInner>>,
- }
- struct ServizioInner {
- x: u32,
- }
- impl Servizio {
- fn new() -> Self {
- Self {
- inner: Rc::new(RefCell::new(ServizioInner { x: 0 })),
- }
- }
- fn state(&self) -> Ref<ServizioInner> {
- self.inner.borrow()
- }
- fn state_mut(&self) -> RefMut<ServizioInner> {
- self.inner.borrow_mut()
- }
- fn inc_x(&self) {
- let mut s = self.state_mut();
- s.x += 1;
- }
- fn get_x(&self) -> u32 {
- let s = self.state();
- s.x
- }
- }
- fn main() {
- let servizio = Servizio::new();
- let servizio2 = servizio.clone();
- servizio.inc_x();
- println!("{}", servizio2.get_x());
- }
Add Comment
Please, Sign In to add comment