1 // SPDX-License-Identifier: GPL-2.0 2 3 //! Rust minimal sample. 4 5 use kernel::prelude::*; 6 7 module! { 8 type: RustMinimal, 9 name: b"rust_minimal", 10 author: b"Rust for Linux Contributors", 11 description: b"Rust minimal sample", 12 license: b"GPL", 13 } 14 15 struct RustMinimal { 16 numbers: Vec<i32>, 17 } 18 19 impl kernel::Module for RustMinimal { 20 fn init(_module: &'static ThisModule) -> Result<Self> { 21 pr_info!("Rust minimal sample (init)\n"); 22 pr_info!("Am I built-in? {}\n", !cfg!(MODULE)); 23 24 let mut numbers = Vec::new(); 25 numbers.try_push(72)?; 26 numbers.try_push(108)?; 27 numbers.try_push(200)?; 28 29 Ok(RustMinimal { numbers }) 30 } 31 } 32 33 impl Drop for RustMinimal { 34 fn drop(&mut self) { 35 pr_info!("My numbers are {:?}\n", self.numbers); 36 pr_info!("Rust minimal sample (exit)\n"); 37 } 38 } 39