Skip to content

Commit eded347

Browse files
committed
add vector type which accepts at least one element
1 parent 58ee395 commit eded347

File tree

1 file changed

+67
-0
lines changed

1 file changed

+67
-0
lines changed

src/main.rs

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2048,6 +2048,7 @@
20482048
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
20492049

20502050
// 50. Custom Option methods impl
2051+
20512052
// #[allow(dead_code)]
20522053
// #[derive(Debug, PartialEq)]
20532054
// enum MyOption<T> {
@@ -2233,6 +2234,8 @@
22332234

22342235
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
22352236

2237+
// 51. Custom Result methods impl
2238+
22362239
// #[allow(dead_code)]
22372240
// #[derive(Debug)]
22382241
// pub enum MyResult<T, E> {
@@ -2313,4 +2316,68 @@
23132316

23142317
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
23152318

2319+
// 52. Vector with at least single element
2320+
2321+
// use std::fmt::Debug;
2322+
2323+
// struct Vector<T> {
2324+
// first: T,
2325+
// rest: Vec<T>,
2326+
// }
2327+
2328+
// #[macro_export]
2329+
// macro_rules! vec {
2330+
// ($first:expr) => {
2331+
// Vector::new($first)
2332+
// };
2333+
2334+
// ($first:expr, $($rest:expr),*) => {{
2335+
// let mut vector = Vector::new($first);
2336+
// $(
2337+
// vector.push($rest);
2338+
// )*
2339+
// vector
2340+
// }};
2341+
// }
2342+
2343+
// impl<T> Vector<T> {
2344+
// fn new(first: T) -> Self {
2345+
// Self {
2346+
// first,
2347+
// rest: Vec::default(),
2348+
// }
2349+
// }
2350+
2351+
// fn push(&mut self, element: T) {
2352+
// self.rest.push(element);
2353+
// }
2354+
// }
2355+
2356+
// impl<T: Debug + Clone> Debug for Vector<T> {
2357+
// fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2358+
// let first = self.first.clone();
2359+
// let mut vector = Vec::default();
2360+
// vector.push(first);
2361+
// vector.extend(self.rest.clone());
2362+
2363+
// Debug::fmt(&vector, f)
2364+
// }
2365+
// }
2366+
2367+
// fn main() {
2368+
// let mut vecc = vec![1];
2369+
// vecc.push(2);
2370+
// vecc.push(3);
2371+
// println!("{vecc:?}");
2372+
2373+
// let vecc = vec![1, 2];
2374+
// println!("{vecc:?}");
2375+
2376+
// // Error
2377+
// // let vecc = vec![];
2378+
// // println!("{vecc:?}");
2379+
// }
2380+
2381+
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
2382+
23162383
fn main() {}

0 commit comments

Comments
 (0)