|
2048 | 2048 | ///////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
2049 | 2049 |
|
2050 | 2050 | // 50. Custom Option methods impl
|
| 2051 | + |
2051 | 2052 | // #[allow(dead_code)]
|
2052 | 2053 | // #[derive(Debug, PartialEq)]
|
2053 | 2054 | // enum MyOption<T> {
|
|
2233 | 2234 |
|
2234 | 2235 | /////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
2235 | 2236 |
|
| 2237 | +// 51. Custom Result methods impl |
| 2238 | + |
2236 | 2239 | // #[allow(dead_code)]
|
2237 | 2240 | // #[derive(Debug)]
|
2238 | 2241 | // pub enum MyResult<T, E> {
|
|
2313 | 2316 |
|
2314 | 2317 | /////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
2315 | 2318 |
|
| 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 | + |
2316 | 2383 | fn main() {}
|
0 commit comments