Skip to content

Commit

Permalink
update
Browse files Browse the repository at this point in the history
  • Loading branch information
0xBoji committed Aug 29, 2024
1 parent c33c520 commit 834b427
Show file tree
Hide file tree
Showing 9 changed files with 164 additions and 2 deletions.
10 changes: 10 additions & 0 deletions src/day10_to_day12/closures.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
pub fn examples() {
println!("Closures Examples:");

let add_one = |x| x + 1;
println!("Add one to 5: {}", add_one(5));

let numbers = vec![1, 2, 3, 4, 5];
let even_numbers: Vec<i32> = numbers.into_iter().filter(|&x| x % 2 == 0).collect();
println!("Even numbers: {:?}", even_numbers);
}
36 changes: 36 additions & 0 deletions src/day10_to_day12/error_handling.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
use std::fs::File;
use std::io::Read;

pub fn examples() {
println!("Error Handling Examples:");
result_example();
custom_error_example();
}

fn result_example() {
let file_result = File::open("nonexistent.txt");
match file_result {
Ok(mut file) => {
let mut content = String::new();
file.read_to_string(&mut content).unwrap();
println!("File content: {}", content);
}
Err(error) => println!("Error opening file: {:?}", error),
}
}

#[derive(Debug)]
struct CustomError(String);

fn custom_error_example() {
fn may_fail(fail: bool) -> Result<(), CustomError> {
if fail {
Err(CustomError("Something went wrong".to_string()))
} else {
Ok(())
}
}

println!("Success: {:?}", may_fail(false));
println!("Failure: {:?}", may_fail(true));
}
21 changes: 21 additions & 0 deletions src/day10_to_day12/generics.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
pub fn examples() {
println!("Generics Examples:");

let numbers = vec![1, 2, 3, 4, 5];
println!("Largest number: {}", largest(&numbers));

let chars = vec!['a', 'b', 'c', 'd', 'e'];
println!("Largest char: {}", largest(&chars));
}

fn largest<T: PartialOrd>(list: &[T]) -> &T {
let mut largest = &list[0];

for item in list.iter() {
if item > largest {
largest = item;
}
}

largest
}
11 changes: 11 additions & 0 deletions src/day10_to_day12/iterators.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
pub fn examples() {
println!("Iterators Examples:");

let numbers = vec![1, 2, 3, 4, 5];

let doubled: Vec<i32> = numbers.iter().map(|&x| x * 2).collect();
println!("Doubled numbers: {:?}", doubled);

let sum: i32 = numbers.iter().sum();
println!("Sum of numbers: {}", sum);
}
16 changes: 16 additions & 0 deletions src/day10_to_day12/lifetimes.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
pub fn examples() {
println!("Lifetimes Examples:");

let string1 = String::from("short");
let string2 = String::from("longer");
let result = longest(&string1, &string2);
println!("Longest string: {}", result);
}

fn longest<'a>(x: &'a str, y: &'a str) -> &'a str {
if x.len() > y.len() {
x
} else {
y
}
}
6 changes: 6 additions & 0 deletions src/day10_to_day12/mod.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
pub mod closures;
pub mod error_handling;
pub mod generics;
pub mod iterators;
pub mod lifetimes;
pub mod smart_pointers;
20 changes: 20 additions & 0 deletions src/day10_to_day12/smart_pointers.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
use std::rc::Rc;
use std::cell::RefCell;

pub fn examples() {
println!("Smart Pointers Examples:");

// Box<T>
let boxed_value = Box::new(5);
println!("Boxed value: {}", boxed_value);

// Rc<T>
let shared_value = Rc::new(10);
let cloned_value = Rc::clone(&shared_value);
println!("Shared value: {}, Cloned value: {}", shared_value, cloned_value);

// RefCell<T>
let mutable_value = RefCell::new(15);
*mutable_value.borrow_mut() += 5;
println!("Mutable value: {}", mutable_value.borrow());
}
34 changes: 34 additions & 0 deletions src/day10_to_day12/traits.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
pub fn examples() {
println!("Traits Examples:");

let circle = Circle { radius: 5.0 };
let rectangle = Rectangle { width: 4.0, height: 6.0 };

println!("Circle area: {}", circle.area());
println!("Rectangle area: {}", rectangle.area());
}

trait Shape {
fn area(&self) -> f64;
}

struct Circle {
radius: f64,
}

impl Shape for Circle {
fn area(&self) -> f64 {
std::f64::consts::PI * self.radius * self.radius
}
}

struct Rectangle {
width: f64,
height: f64,
}

impl Shape for Rectangle {
fn area(&self) -> f64 {
self.width * self.height
}
}
12 changes: 10 additions & 2 deletions src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,16 @@ pub mod day07_to_day09;
// use day07_to_day09::binary_search;
// use day07_to_day09::bubble_sort;
// use day07_to_day09::palindrome_checker;
use day07_to_day09::fibonacci_sequence;
// use day07_to_day09::fibonacci_sequence;

//Day 10 to day 12
pub mod day10_to_day12;
// use day10_to_day12::closures;
// use day10_to_day12::error_handling;
// use day10_to_day12::generics;
// use day10_to_day12::iterators;
// use day10_to_day12::lifetimes;
// use day10_to_day12::smart_pointers;

fn main() {
//Hello world in rust
Expand All @@ -51,7 +59,7 @@ fn main() {
// conditionals::run();
// enums::run();
// pointer_ref::run();

//Day04 to day06
// shadowing::run();
// ownership::run();
Expand Down

0 comments on commit 834b427

Please sign in to comment.