summaryrefslogtreecommitdiff
path: root/rustlings/exercises/19_smart_pointers/box1.rs
diff options
context:
space:
mode:
authorHunter Kvalevog <hunter@kvog.sh>2026-10-02 21:53:51 -0500
committerHunter Kvalevog <hunter@kvog.sh>2026-10-02 21:53:51 -0500
commit4dfc11d74ab02ac5765ae5d08fb750c91f4744b4 (patch)
tree17ba62056d6b691dd0217b0e8f1b3a5826dce0f6 /rustlings/exercises/19_smart_pointers/box1.rs
parent02d8f1c62896576e1266553a56980eddbc2a88d7 (diff)
rustlings: move to rust/
Diffstat (limited to 'rustlings/exercises/19_smart_pointers/box1.rs')
-rw-r--r--rustlings/exercises/19_smart_pointers/box1.rs50
1 files changed, 0 insertions, 50 deletions
diff --git a/rustlings/exercises/19_smart_pointers/box1.rs b/rustlings/exercises/19_smart_pointers/box1.rs
deleted file mode 100644
index ee379ca..0000000
--- a/rustlings/exercises/19_smart_pointers/box1.rs
+++ /dev/null
@@ -1,50 +0,0 @@
-// At compile time, Rust needs to know how much space a type takes up. This
-// becomes problematic for recursive types, where a value can have as part of
-// itself another value of the same type. To get around the issue, we can use a
-// `Box` - a smart pointer used to store data on the heap, which also allows us
-// to wrap a recursive type.
-//
-// The recursive type we're implementing in this exercise is the "cons list", a
-// data structure frequently found in functional programming languages. Each
-// item in a cons list contains two elements: The value of the current item and
-// the next item. The last item is a value called `Nil`.
-
-// TODO: Use a `Box` in the enum definition to make the code compile.
-#[derive(PartialEq, Debug)]
-enum List {
- Cons(i32, Box<List>),
- Nil,
-}
-
-// TODO: Create an empty cons list.
-fn create_empty_list() -> List {
- List::Nil
-}
-
-// TODO: Create a non-empty cons list.
-fn create_non_empty_list() -> List {
- List::Cons(1, Box::new(List::Nil))
-}
-
-fn main() {
- println!("This is an empty cons list: {:?}", create_empty_list());
- println!(
- "This is a non-empty cons list: {:?}",
- create_non_empty_list(),
- );
-}
-
-#[cfg(test)]
-mod tests {
- use super::*;
-
- #[test]
- fn test_create_empty_list() {
- assert_eq!(create_empty_list(), List::Nil);
- }
-
- #[test]
- fn test_create_non_empty_list() {
- assert_ne!(create_empty_list(), create_non_empty_list());
- }
-}