Merge tag 'docs-6.4-2' of git://git.lwn.net/linux
[platform/kernel/linux-starfive.git] / samples / rust / rust_minimal.rs
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: "rust_minimal",
10     author: "Rust for Linux Contributors",
11     description: "Rust minimal sample",
12     license: "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 }