1// SPDX-License-Identifier: GPL-2.0
2
3//! Rust minimal sample.
4
5use kernel::prelude::*;
6
7module! {
8    type: RustMinimal,
9    name: "rust_minimal",
10    author: "Rust for Linux Contributors",
11    description: "Rust minimal sample",
12    license: "GPL",
13}
14
15struct RustMinimal {
16    numbers: Vec<i32>,
17}
18
19impl 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
33impl 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