summaryrefslogtreecommitdiff
path: root/generics/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'generics/src/main.rs')
-rw-r--r--generics/src/main.rs68
1 files changed, 68 insertions, 0 deletions
diff --git a/generics/src/main.rs b/generics/src/main.rs
new file mode 100644
index 0000000..e41d6f5
--- /dev/null
+++ b/generics/src/main.rs
@@ -0,0 +1,68 @@
+//struct Point<T, U> {
+// x: T,
+// y: U,
+//}
+
+//impl<T, U> Point<T, U> {
+// fn x(&self) -> &T {
+// &self.x
+// }
+//
+// fn y(&self) -> &T {
+// &self.y
+// }
+
+// fn mixup<V, W>(self, other: Point<V, W>) -> Point<T, W> {
+// Point {
+// x: self.x,
+// y: other.y,
+// }
+// }
+//}
+
+fn largest<T: PartialOrd + Copy>(list: &[T]) -> T {
+ let mut largest = list[0];
+
+ for &item in list.iter() {
+
+ if item > largest {
+ largest = item;
+ }
+
+ }
+
+ largest
+}
+
+//enum Option_i32 {
+// Some(i32),
+// None,
+//}
+//
+//enum Option_f64 {
+// Some(f64),
+// None,
+//}
+
+fn main() {
+ let number_list = vec![34, 50, 25, 100, 65];
+ dbg!(largest(&number_list));
+ let char_list = vec!['h', 'e', 'l', 'l', 'o'];
+ dbg!(largest(&char_list));
+// let integer = Point { x: 5, y: 10 };
+// let float = Point { x: 5.0, y: 10.0 };
+
+// let p = Point { x: 5.0, y: 10.5 };
+// dbg!(p.x());
+// dbg!(p.y());
+
+// let p1 = Point { x: 5, y: 10.4 };
+// let p2 = Point { x: "Hello", y: 'c' };
+// let p3 = p1.mixup(p2);
+//
+// dbg!(p3.x);
+// dbg!(p3.y);
+
+// let integer = Option_i32::Some(5);
+// let float = Option_f64::Some(5.0);
+}