162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0 262306a36Sopenharmony_ci 362306a36Sopenharmony_ci//! Rust minimal sample. 462306a36Sopenharmony_ci 562306a36Sopenharmony_ciuse kernel::prelude::*; 662306a36Sopenharmony_ci 762306a36Sopenharmony_cimodule! { 862306a36Sopenharmony_ci type: RustMinimal, 962306a36Sopenharmony_ci name: "rust_minimal", 1062306a36Sopenharmony_ci author: "Rust for Linux Contributors", 1162306a36Sopenharmony_ci description: "Rust minimal sample", 1262306a36Sopenharmony_ci license: "GPL", 1362306a36Sopenharmony_ci} 1462306a36Sopenharmony_ci 1562306a36Sopenharmony_cistruct RustMinimal { 1662306a36Sopenharmony_ci numbers: Vec<i32>, 1762306a36Sopenharmony_ci} 1862306a36Sopenharmony_ci 1962306a36Sopenharmony_ciimpl kernel::Module for RustMinimal { 2062306a36Sopenharmony_ci fn init(_module: &'static ThisModule) -> Result<Self> { 2162306a36Sopenharmony_ci pr_info!("Rust minimal sample (init)\n"); 2262306a36Sopenharmony_ci pr_info!("Am I built-in? {}\n", !cfg!(MODULE)); 2362306a36Sopenharmony_ci 2462306a36Sopenharmony_ci let mut numbers = Vec::new(); 2562306a36Sopenharmony_ci numbers.try_push(72)?; 2662306a36Sopenharmony_ci numbers.try_push(108)?; 2762306a36Sopenharmony_ci numbers.try_push(200)?; 2862306a36Sopenharmony_ci 2962306a36Sopenharmony_ci Ok(RustMinimal { numbers }) 3062306a36Sopenharmony_ci } 3162306a36Sopenharmony_ci} 3262306a36Sopenharmony_ci 3362306a36Sopenharmony_ciimpl Drop for RustMinimal { 3462306a36Sopenharmony_ci fn drop(&mut self) { 3562306a36Sopenharmony_ci pr_info!("My numbers are {:?}\n", self.numbers); 3662306a36Sopenharmony_ci pr_info!("Rust minimal sample (exit)\n"); 3762306a36Sopenharmony_ci } 3862306a36Sopenharmony_ci} 39