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

source code of linux/samples/rust/rust_minimal.rs