|  | // SPDX-License-Identifier: GPL-2.0 | 
|  |  | 
|  | //! Rust minimal sample. | 
|  |  | 
|  | use kernel::prelude::*; | 
|  |  | 
|  | module! { | 
|  | type: RustMinimal, | 
|  | name: b"rust_minimal", | 
|  | author: b"Rust for Linux Contributors", | 
|  | description: b"Rust minimal sample", | 
|  | license: b"GPL", | 
|  | } | 
|  |  | 
|  | struct RustMinimal { | 
|  | numbers: Vec<i32>, | 
|  | } | 
|  |  | 
|  | impl kernel::Module for RustMinimal { | 
|  | fn init(_module: &'static ThisModule) -> Result<Self> { | 
|  | pr_info!("Rust minimal sample (init)\n"); | 
|  | pr_info!("Am I built-in? {}\n", !cfg!(MODULE)); | 
|  |  | 
|  | let mut numbers = Vec::new(); | 
|  | numbers.try_push(72)?; | 
|  | numbers.try_push(108)?; | 
|  | numbers.try_push(200)?; | 
|  |  | 
|  | Ok(RustMinimal { numbers }) | 
|  | } | 
|  | } | 
|  |  | 
|  | impl Drop for RustMinimal { | 
|  | fn drop(&mut self) { | 
|  | pr_info!("My numbers are {:?}\n", self.numbers); | 
|  | pr_info!("Rust minimal sample (exit)\n"); | 
|  | } | 
|  | } |