summaryrefslogtreecommitdiff
path: root/advanced
diff options
context:
space:
mode:
authorAdam Carpenter <53hornet@gmail.com>2019-03-27 15:32:37 -0400
committerAdam Carpenter <53hornet@gmail.com>2019-03-27 15:32:37 -0400
commit67cdcc2e12118becb823e20a40cc2687f2b8425a (patch)
treeed92c3234b89079e6d4cf36f5e80c5ffa79def48 /advanced
parente25482fca375d318a39c3b54db396b0db6e0b263 (diff)
downloadlearning-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.lock11
-rw-r--r--advanced/adv-fn-closure/Cargo.toml8
-rw-r--r--advanced/adv-fn-closure/src/main.rs79
-rw-r--r--advanced/adv-lifetimes/Cargo.lock4
-rw-r--r--advanced/adv-lifetimes/Cargo.toml7
-rw-r--r--advanced/adv-lifetimes/src/main.rs36
-rw-r--r--advanced/adv-traits/Cargo.lock4
-rw-r--r--advanced/adv-traits/Cargo.toml7
-rw-r--r--advanced/adv-traits/src/main.rs163
-rw-r--r--advanced/adv-types/Cargo.lock4
-rw-r--r--advanced/adv-types/Cargo.toml7
-rw-r--r--advanced/adv-types/src/main.rs41
-rw-r--r--advanced/hello_macro/Cargo.toml7
-rw-r--r--advanced/hello_macro/src/lib.rs3
-rw-r--r--advanced/unsafe-rust/Cargo.lock4
-rw-r--r--advanced/unsafe-rust/Cargo.toml7
-rw-r--r--advanced/unsafe-rust/src/main.rs62
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
-}
-