rustbook-learning-guide 0.1.0

A comprehensive Rust learning guide with practical examples covering ownership, traits, polymorphism, and more
Documentation
//! Smart pointer examples

use std::rc::Rc;
use std::cell::RefCell;

pub fn smart_pointer_examples() {
    println!("\n🧠 Smart Pointer Examples");
    println!("{}", "-".repeat(27));
    
    // Box example
    let boxed = Box::new(5);
    println!("Boxed value: {}", boxed);
    
    // Rc example
    let rc = Rc::new(10);
    let rc_clone = Rc::clone(&rc);
    println!("Rc value: {}, clone: {}", rc, rc_clone);
    
    // RefCell example
    let ref_cell = RefCell::new(20);
    *ref_cell.borrow_mut() += 5;
    println!("RefCell value: {}", ref_cell.borrow());
}

#[derive(Debug)]
pub struct Shoe {
    size: u32,
    style: String,
}

impl Shoe {
    pub fn new(size: u32, style: &str) -> Self {
        Shoe {
            size,
            style: style.to_string(),
        }
    }
}

pub fn shoes_in_size(shoes: Vec<Shoe>, shoe_size: u32) -> Vec<Shoe> {
    shoes.into_iter().filter(|s| s.size == shoe_size).collect()
}

#[derive(Debug)]
pub enum List {
    Cons(i32, Box<List>),
    Nil,
}

impl List {
    pub fn new(values: Vec<i32>) -> Box<List> {
        let mut result = Box::new(List::Nil);
        for value in values.into_iter().rev() {
            result = Box::new(List::Cons(value, result));
        }
        result
    }
}