diff options
author | Adam Carpenter <53hornet@gmail.com> | 2019-03-27 15:32:37 -0400 |
---|---|---|
committer | Adam Carpenter <53hornet@gmail.com> | 2019-03-27 15:32:37 -0400 |
commit | 67cdcc2e12118becb823e20a40cc2687f2b8425a (patch) | |
tree | ed92c3234b89079e6d4cf36f5e80c5ffa79def48 /advanced | |
parent | e25482fca375d318a39c3b54db396b0db6e0b263 (diff) | |
download | learning-rust-67cdcc2e12118becb823e20a40cc2687f2b8425a.tar.xz learning-rust-67cdcc2e12118becb823e20a40cc2687f2b8425a.zip |
Started Rust in Action MEAP.
Diffstat (limited to 'advanced')
-rw-r--r-- | advanced/adv-fn-closure/Cargo.lock | 11 | ||||
-rw-r--r-- | advanced/adv-fn-closure/Cargo.toml | 8 | ||||
-rw-r--r-- | advanced/adv-fn-closure/src/main.rs | 79 | ||||
-rw-r--r-- | advanced/adv-lifetimes/Cargo.lock | 4 | ||||
-rw-r--r-- | advanced/adv-lifetimes/Cargo.toml | 7 | ||||
-rw-r--r-- | advanced/adv-lifetimes/src/main.rs | 36 | ||||
-rw-r--r-- | advanced/adv-traits/Cargo.lock | 4 | ||||
-rw-r--r-- | advanced/adv-traits/Cargo.toml | 7 | ||||
-rw-r--r-- | advanced/adv-traits/src/main.rs | 163 | ||||
-rw-r--r-- | advanced/adv-types/Cargo.lock | 4 | ||||
-rw-r--r-- | advanced/adv-types/Cargo.toml | 7 | ||||
-rw-r--r-- | advanced/adv-types/src/main.rs | 41 | ||||
-rw-r--r-- | advanced/hello_macro/Cargo.toml | 7 | ||||
-rw-r--r-- | advanced/hello_macro/src/lib.rs | 3 | ||||
-rw-r--r-- | advanced/unsafe-rust/Cargo.lock | 4 | ||||
-rw-r--r-- | advanced/unsafe-rust/Cargo.toml | 7 | ||||
-rw-r--r-- | advanced/unsafe-rust/src/main.rs | 62 |
17 files changed, 0 insertions, 454 deletions
diff --git a/advanced/adv-fn-closure/Cargo.lock b/advanced/adv-fn-closure/Cargo.lock deleted file mode 100644 index 360607c..0000000 --- a/advanced/adv-fn-closure/Cargo.lock +++ /dev/null @@ -1,11 +0,0 @@ -[[package]] -name = "adv-fn-closure" -version = "0.1.0" -dependencies = [ - "hello_macro 0.1.0", -] - -[[package]] -name = "hello_macro" -version = "0.1.0" - diff --git a/advanced/adv-fn-closure/Cargo.toml b/advanced/adv-fn-closure/Cargo.toml deleted file mode 100644 index 6cd8dbd..0000000 --- a/advanced/adv-fn-closure/Cargo.toml +++ /dev/null @@ -1,8 +0,0 @@ -[package] -name = "adv-fn-closure" -version = "0.1.0" -authors = ["Adam Carpenter <53hornet@gmail.com>"] -edition = "2018" - -[dependencies] -hello_macro = { path = "../hello_macro" } diff --git a/advanced/adv-fn-closure/src/main.rs b/advanced/adv-fn-closure/src/main.rs deleted file mode 100644 index 064f300..0000000 --- a/advanced/adv-fn-closure/src/main.rs +++ /dev/null @@ -1,79 +0,0 @@ -use hello_macro::HelloMacro; -//use hello_macro_derive::HelloMacro; - -struct Pancakes; - -impl HelloMacro for Pancakes { - fn hello_macro() { - println!("pancakes"); - } -} - -fn main() { - Pancakes::hello_macro(); -} - -//fn add_one(x: i32) -> i32 { -// x + 1 -//} -// -//fn do_twice(f: fn(i32) -> i32, arg: i32) -> i32 { -// f(arg) + f(arg) -//} - - -//fn returns_closure() -> Box<dyn Fn(i32) -> i32> { -// Box::new(|x| x + 1) -//} -// -// -//enum Status { -// Value(u32), -// Stop, -//} - - -//#[macro_export] -//macro_rules! vec { -// ( $( $x:expr ), * ) => { -// { -// let mut temp_vec = Vec::new(); -// $( -// temp_vec.push($x); -// )* -// temp_vec -// } -// }; -//} - - -//#[some_attribute] -//pub fn some_name(input: TokenStream) -> TokenStream { -//} -// -// -//fn main() { -// let answer = do_twice(add_one, 5); -// -// println!("{}", answer); - - -// let list_of_numbers = vec![1, 2, 3]; -// let list_of_strings: Vec<String> = list_of_numbers -// .iter() -// .map(ToString::to_string) -// .collect(); -// dbg!(list_of_strings); - - -// let list_of_statuses: Vec<Status> = -// (0u32..20) -// .map(Status::Value) -// .collect(); - - - //returns_closure(); - - - -//} diff --git a/advanced/adv-lifetimes/Cargo.lock b/advanced/adv-lifetimes/Cargo.lock deleted file mode 100644 index 591810c..0000000 --- a/advanced/adv-lifetimes/Cargo.lock +++ /dev/null @@ -1,4 +0,0 @@ -[[package]] -name = "adv-lifetimes" -version = "0.1.0" - diff --git a/advanced/adv-lifetimes/Cargo.toml b/advanced/adv-lifetimes/Cargo.toml deleted file mode 100644 index b127e9f..0000000 --- a/advanced/adv-lifetimes/Cargo.toml +++ /dev/null @@ -1,7 +0,0 @@ -[package] -name = "adv-lifetimes" -version = "0.1.0" -authors = ["Adam Carpenter <53hornet@gmail.com>"] -edition = "2018" - -[dependencies] diff --git a/advanced/adv-lifetimes/src/main.rs b/advanced/adv-lifetimes/src/main.rs deleted file mode 100644 index 755baf4..0000000 --- a/advanced/adv-lifetimes/src/main.rs +++ /dev/null @@ -1,36 +0,0 @@ -fn main() { - let num = 5; - - let obj = Box::new(Ball { diameter: &num }) as Box<dyn Red>; -} - -struct Context<'s>(&'s str); - -struct Parser<'c, 's: 'c> { - context: &'c Context<'s>, -} - -impl<'c, 's> Parser<'c, 's> { - fn parse(&self) -> Result<(), &'s str> { - Err(&self.context.0[1..]) - } -} - -fn parse_context(context: Context) -> Result<(), &str> { - Parser { context: &context }.parse() -} - -trait Red { } - -struct Ball<'a> { - diameter: &'a i32, -} - -impl<'a> Red for Ball<'a> { } - -struct StrWrap<'a>(&'a str); - -fn foo(string: &str) -> StrWrap<'_> { - StrWrap(string) -} - diff --git a/advanced/adv-traits/Cargo.lock b/advanced/adv-traits/Cargo.lock deleted file mode 100644 index 4fb1ae5..0000000 --- a/advanced/adv-traits/Cargo.lock +++ /dev/null @@ -1,4 +0,0 @@ -[[package]] -name = "adv-traits" -version = "0.1.0" - diff --git a/advanced/adv-traits/Cargo.toml b/advanced/adv-traits/Cargo.toml deleted file mode 100644 index b1c5f6a..0000000 --- a/advanced/adv-traits/Cargo.toml +++ /dev/null @@ -1,7 +0,0 @@ -[package] -name = "adv-traits" -version = "0.1.0" -authors = ["Adam Carpenter <53hornet@gmail.com>"] -edition = "2018" - -[dependencies] diff --git a/advanced/adv-traits/src/main.rs b/advanced/adv-traits/src/main.rs deleted file mode 100644 index 659883c..0000000 --- a/advanced/adv-traits/src/main.rs +++ /dev/null @@ -1,163 +0,0 @@ -//fn main() { -// println!("Hello, world!"); -//} -// -//pub trait Iterator { -// type Item; -// -// fn next(&mut self) -> Option<Self::Item>; -//} -// -// -//#[derive(Debug, PartialEq)] -//struct Point { -// x: i32, -// y: i32, -//} -// -//impl Add for Point { -// type Output = Point; -// -// fn add(self, other: Point) -> Point { -// Point { -// x: self.x + other.x, -// y: self.y + other.y, -// } -// } -//} - -//fn main() { -// assert_eq!(Point { x: 1, y: 0 } + Point { x: 2, y: 3 }, -// Point { x: 3, y: 3 }); -// println!("Done."); -//} - -//trait Add<RHS=Self> { -// type Output; -// -// fn add(self, rhs: RHS) -> Self::Output; -//} - -//use std::ops::Add; -// -//struct Millimeters(u32); -//struct Meters(u32); -// -//impl Add<Meters> for Millimeters { -// type Output = Millimeters; -// -// fn add(self, other: Meters) -> Millimeters { -// Millimeters(self.0 + (other.0 * 1000)) -// } -//} - - -//trait Pilot { -// fn fly(&self); -//} -// -//trait Wizard { -// fn fly(&self); -//} -// -//struct Human; -// -//impl Pilot for Human { -// fn fly(&self) { -// println!("Because I was inverted."); -// } -//} -// -//impl Wizard for Human { -// fn fly(&self) { -// println!("Fly, you fools."); -// } -//} -// -//impl Human { -// fn fly(&self) { -// println!("*feels real loose like a long-neck goose*"); -// } -//} -// -// -//trait Animal { -// fn baby_name() -> String; -//} -// -//struct Dog; -// -//impl Dog { -// fn baby_name() -> String { -// String::from("Spot") -// } -//} -// -//impl Animal for Dog { -// fn baby_name() -> String { -// String::from("puppy") -// } -//} - - -//fn main() { -// let person = Human; -// person.fly(); -// Pilot::fly(&person); -// Wizard::fly(&person); -// -// -// println!("A baby dog is called a {}", <Dog as Animal>::baby_name()); -// -// -// println!("Done."); -//} -// - - -//use std::fmt; -// -//trait OutlinePrint: fmt::Display { -// fn outline_print(&self) { -// let output = self.to_string(); -// let len = output.len(); -// println!("{}", "*".repeat(len + 4)); -// println!("*{}*", " ".repeat(len + 2)); -// println!("* {} *", output); -// println!("*{}*", " ".repeat(len + 2)); -// println!("{}", "*".repeat(len + 4)); -// } -//} -// -//struct Point { -// x: i32, -// y: i32, -//} -// -//impl OutlinePrint for Point {} -// -//impl fmt::Display for Point { -// fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { -// write!(f, "({}, {})", self.x, self.y) -// } -//} -// -//fn main() { -// let point = Point { x: 5, y: 6 }; -// point.outline_print(); -//} - -use std::fmt; - -struct Wrapper(Vec<String>); - -impl fmt::Display for Wrapper { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - write!(f, "[{}]", self.0.join(", ")) - } -} - -fn main() { - let w = Wrapper(vec![String::from("hello"), String::from("world")]); - println!("w = {}", w); -} diff --git a/advanced/adv-types/Cargo.lock b/advanced/adv-types/Cargo.lock deleted file mode 100644 index a7ad78b..0000000 --- a/advanced/adv-types/Cargo.lock +++ /dev/null @@ -1,4 +0,0 @@ -[[package]] -name = "adv-types" -version = "0.1.0" - diff --git a/advanced/adv-types/Cargo.toml b/advanced/adv-types/Cargo.toml deleted file mode 100644 index a3ca211..0000000 --- a/advanced/adv-types/Cargo.toml +++ /dev/null @@ -1,7 +0,0 @@ -[package] -name = "adv-types" -version = "0.1.0" -authors = ["Adam Carpenter <53hornet@gmail.com>"] -edition = "2018" - -[dependencies] diff --git a/advanced/adv-types/src/main.rs b/advanced/adv-types/src/main.rs deleted file mode 100644 index 60d42b2..0000000 --- a/advanced/adv-types/src/main.rs +++ /dev/null @@ -1,41 +0,0 @@ -//use std::io::Error; -//use std::fmt; - -//pub trait Write { -// -// fn write(&mut self, buf: &[u8]) -> Result<usize>; -// fn flush(&mut self) -> Result<(), Error>; -// -// fn write_all(&mut self, buf: &[u8]) -> Result<()>; -// fn write_fmt(&mut self, fmt: fmt::Arguments) -> Result<()>; -//} - -//fn main() { -// type Miles = i32; -// -// let x: i32 = 5; -// let y: Miles = 5; -// -// println!("x + y = {}", x + y); - - -//} - -//type Thunk = Box<dyn Fn() + Send + 'static>; -// -//let f: Thunk = Box::new(|| println!("hi")); -// -//fn takes_long_type(f: Thunk) { -//} -// -//fn returns_long_type() -> Thunk { -//} - -fn main() { - print!("forever"); - - loop { - print!("and ever "); - } -} - diff --git a/advanced/hello_macro/Cargo.toml b/advanced/hello_macro/Cargo.toml deleted file mode 100644 index e812230..0000000 --- a/advanced/hello_macro/Cargo.toml +++ /dev/null @@ -1,7 +0,0 @@ -[package] -name = "hello_macro" -version = "0.1.0" -authors = ["Adam Carpenter <53hornet@gmail.com>"] -edition = "2018" - -[dependencies] diff --git a/advanced/hello_macro/src/lib.rs b/advanced/hello_macro/src/lib.rs deleted file mode 100644 index e747931..0000000 --- a/advanced/hello_macro/src/lib.rs +++ /dev/null @@ -1,3 +0,0 @@ -pub trait HelloMacro { - fn hello_macro(); -} diff --git a/advanced/unsafe-rust/Cargo.lock b/advanced/unsafe-rust/Cargo.lock deleted file mode 100644 index fbd902c..0000000 --- a/advanced/unsafe-rust/Cargo.lock +++ /dev/null @@ -1,4 +0,0 @@ -[[package]] -name = "unsafe-rust" -version = "0.1.0" - diff --git a/advanced/unsafe-rust/Cargo.toml b/advanced/unsafe-rust/Cargo.toml deleted file mode 100644 index b37474a..0000000 --- a/advanced/unsafe-rust/Cargo.toml +++ /dev/null @@ -1,7 +0,0 @@ -[package] -name = "unsafe-rust" -version = "0.1.0" -authors = ["Adam Carpenter <53hornet@gmail.com>"] -edition = "2018" - -[dependencies] diff --git a/advanced/unsafe-rust/src/main.rs b/advanced/unsafe-rust/src/main.rs deleted file mode 100644 index c9967a8..0000000 --- a/advanced/unsafe-rust/src/main.rs +++ /dev/null @@ -1,62 +0,0 @@ -fn main() { - let mut num = 5; - - let r1 = &num as *const i32; - let r2 = &mut num as *mut i32; - - let address = 0x012345usize; - let r = address as *const i32; - - unsafe { - println!("{}", *r1); - println!("{}", *r2); - } - - unsafe { - dangerous(); - } - - - unsafe { - println!("c call: {}", abs(-3)); - } - - - unsafe { - HELLO_WORLD = "test"; - println!("{}", HELLO_WORLD); - } - println!("{}", HI_THERE); - - add_to_count(3); - - unsafe { - println!("counter: {}", COUNTER); - } -} - -unsafe fn dangerous() {} - -extern "C" { - fn abs(input: i32) -> i32; -} - -static mut HELLO_WORLD: &str = "hello world"; -static mut COUNTER: u32 = 0; - -fn add_to_count(inc: u32) { - unsafe { - COUNTER += inc; - } -} - -const HI_THERE: &str = "hi there"; - -unsafe trait Foo { - // methods -} - -unsafe impl Foo for i32 { - // implementations -} - |