remove workspace from the repository, instead generate a zipfile to upload
[rust-101.git] / workspace / src / part02.rs
diff --git a/workspace/src/part02.rs b/workspace/src/part02.rs
deleted file mode 100644 (file)
index 357c5a0..0000000
+++ /dev/null
@@ -1,83 +0,0 @@
-// Rust-101, Part 02: Generic types, Traits
-// ========================================
-
-
-// ## Generic datatypes
-
-pub enum SomethingOrNothing<T>  {
-    Something(T),
-    Nothing,
-}
-// Instead of writing out all the variants, we can also just import them all at once.
-pub use self::SomethingOrNothing::*;
-type NumberOrNothing = SomethingOrNothing<i32>;
-
-// ## Generic `impl`, Static functions
-// Inside an `impl`, `Self` refers to the type we are implementing things for. Here, it is
-// an alias for `SomethingOrNothing<T>`.
-impl<T> SomethingOrNothing<T> {
-    fn new(o: Option<T>) -> Self {
-        unimplemented!()
-    }
-
-    fn to_option(self) -> Option<T> {
-        unimplemented!()
-    }
-}
-// You can call static functions, and in particular constructors, as demonstrated in `call_constructor`.
-fn call_constructor(x: i32) -> SomethingOrNothing<i32> {
-    SomethingOrNothing::new(Some(x))
-}
-
-// ## Traits
-
-pub trait Minimum : Copy {
-    fn min(self, b: Self) -> Self;
-}
-
-pub fn vec_min<T: Minimum>(v: Vec<T>) -> SomethingOrNothing<T> {
-    let mut min = Nothing;
-    for e in v {
-        min = Something(match min {
-            Nothing => e,
-            // Here, we can now call the `min` function of the trait.
-            Something(n) => {
-                unimplemented!()
-            }
-        });
-    }
-    min
-}
-
-// ## Trait implementations
-// To make `vec_min` usable with a `Vec<i32>`, we implement the `Minimum` trait for `i32`.
-impl Minimum for i32 {
-    fn min(self, b: Self) -> Self {
-        unimplemented!()
-    }
-}
-
-// We again provide a `print` function.
-impl NumberOrNothing {
-    pub fn print(self) {
-        match self {
-            Nothing => println!("The number is: <nothing>"),
-            Something(n) => println!("The number is: {}", n),
-        };
-    }
-}
-
-// Now we are ready to run our new code. Remember to change `main.rs` appropriately.
-fn read_vec() -> Vec<i32> {
-    vec![18,5,7,3,9,27]
-}
-pub fn main() {
-    let vec = read_vec();
-    let min = vec_min(vec);
-    min.print();
-}
-
-
-// **Exercise 02.1**: Change your program such that it computes the minimum of a `Vec<f32>` (where `f32` is the type
-// of 32-bit floating-point numbers). You should not change `vec_min` in any way, obviously!
-