diff --git a/abstractclasstest/Cargo.lock b/abstractclasstest/Cargo.lock new file mode 100644 index 0000000..68069aa --- /dev/null +++ b/abstractclasstest/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "abstractclasstest" +version = "0.1.0" diff --git a/abstractclasstest/Cargo.toml b/abstractclasstest/Cargo.toml new file mode 100644 index 0000000..d2f6ee7 --- /dev/null +++ b/abstractclasstest/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "abstractclasstest" +version = "0.1.0" +edition = "2021" + +[dependencies] diff --git a/abstractclasstest/README.md b/abstractclasstest/README.md new file mode 100644 index 0000000..d2992a6 --- /dev/null +++ b/abstractclasstest/README.md @@ -0,0 +1,3 @@ +# AbstractClassTest + +Trying to do something akin to an abstract class in Rust. diff --git a/abstractclasstest/src/main.rs b/abstractclasstest/src/main.rs new file mode 100644 index 0000000..e76f4eb --- /dev/null +++ b/abstractclasstest/src/main.rs @@ -0,0 +1,30 @@ +trait Base { + fn files(&self) -> Vec; + fn show_files(&self) { + for file in self.files() { + println!("file={file}"); + } + } +} + +struct UpcaseFiles {} +impl Base for UpcaseFiles { + fn files(&self) -> Vec { + vec!["HELLO".into(), "WORLD".into()] + } +} + +struct LowcaseFiles {} +impl Base for LowcaseFiles { + fn files(&self) -> Vec { + vec!["hello".into(), "world".into()] + } +} + +fn main() { + let f1 = UpcaseFiles {}; + f1.show_files(); + + let f2 = LowcaseFiles {}; + f2.show_files() +}