This is an automated email from the ASF dual-hosted git repository. acassis pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/nuttx-apps.git
commit 8d6c49536569b517a97bf3104edb83636e2b910e Author: Shoji Tokunaga <[email protected]> AuthorDate: Thu Jun 18 23:53:58 2026 +0900 examples/rust: Show command arguments in hello_rust_cargo Print each argument passed from nsh with its index, and report when the example is running on the simulator target. This makes the Rust example demonstrate both C argv handling and target-specific output. Signed-off-by: Shoji Tokunaga <toku@mac.com> --- examples/rust/hello/src/lib.rs | 34 +++++++++++++++++++++++----------- 1 file changed, 23 insertions(+), 11 deletions(-) diff --git a/examples/rust/hello/src/lib.rs b/examples/rust/hello/src/lib.rs index dbe71ca0e..e9b0e0ade 100644 --- a/examples/rust/hello/src/lib.rs +++ b/examples/rust/hello/src/lib.rs @@ -1,7 +1,7 @@ extern crate serde; extern crate serde_json; -use core::ffi::{c_char, c_int}; +use core::ffi::{c_char, c_int, CStr}; use serde::{Deserialize, Serialize}; #[derive(Serialize, Deserialize)] @@ -10,10 +10,29 @@ struct Person { age: u8, } -// Function hello_rust_cargo without manglng +fn print_args(argc: c_int, argv: *mut *mut c_char) { + if argv.is_null() { + return; + } + + for i in 1..argc { + let arg = unsafe { *argv.add(i as usize) }; + if arg.is_null() { + continue; + } + + let arg = unsafe { CStr::from_ptr(arg) }.to_string_lossy(); + println!("{}: {}", i, arg); + } +} + +// Function hello_rust_cargo without mangling #[no_mangle] -pub extern "C" fn hello_rust_cargo_main(_argc: c_int, _argv: *mut *mut c_char) -> c_int { - // Print hello world to stdout +pub extern "C" fn hello_rust_cargo_main(argc: c_int, argv: *mut *mut c_char) -> c_int { + print_args(argc, argv); + + #[cfg(feature = "sim")] + println!("On simulator"); let john = Person { name: "John".to_string(), @@ -50,12 +69,5 @@ pub extern "C" fn hello_rust_cargo_main(_argc: c_int, _argv: *mut *mut c_char) - .block_on(async { println!("Hello world from tokio!"); }); - - #[cfg(not(feature = "sim"))] - loop { - // Do nothing - } - - #[cfg(feature = "sim")] 0 }
