diff options
Diffstat (limited to 'components/rust/examples/modules/example_lib')
3 files changed, 79 insertions, 0 deletions
diff --git a/components/rust/examples/modules/example_lib/.gitignore b/components/rust/examples/modules/example_lib/.gitignore new file mode 100644 index 0000000000..5f4fb2595d --- /dev/null +++ b/components/rust/examples/modules/example_lib/.gitignore @@ -0,0 +1,37 @@ +# Rust build artifacts (now in build/rust) +/target/ +**/*.rs.bk +*.pdb + +# Cargo lock file (optional - uncomment if you want to exclude it) +# Cargo.lock + +# Build directories +/build/ +*.o +*.a +*.so +*.dylib +*.dll + +# IDE specific files +.idea/ +.vscode/ +*.swp +*.swo +*~ +.DS_Store + +# Debug files +*.dSYM/ +*.su +*.idb +*.pdb + +# Backup files +*.bak +*.tmp +*.temp + +# Log files +*.log
\ No newline at end of file diff --git a/components/rust/examples/modules/example_lib/Cargo.toml b/components/rust/examples/modules/example_lib/Cargo.toml new file mode 100644 index 0000000000..e44aae2848 --- /dev/null +++ b/components/rust/examples/modules/example_lib/Cargo.toml @@ -0,0 +1,12 @@ +[workspace] + +[package] +name = "examplelib" +version = "0.1.0" +edition = "2024" + +[lib] +crate-type = ["cdylib"] + +[dependencies] +rt-rust = { path = "../../.." }
\ No newline at end of file diff --git a/components/rust/examples/modules/example_lib/src/lib.rs b/components/rust/examples/modules/example_lib/src/lib.rs new file mode 100644 index 0000000000..5f81c1553f --- /dev/null +++ b/components/rust/examples/modules/example_lib/src/lib.rs @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2006-2024, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author notes + * 2025-10-10 foxglove Basic library module template + */ +#![no_std] +/* Bring rt-rust's println! macro into scope */ +use rt_rust::println; +use core::ffi::{c_char, CStr}; +#[unsafe(no_mangle)] +pub extern "C" fn rust_mylib_println(s: *const c_char) { + if s.is_null() { + println!(""); + } else { + let cs = unsafe {CStr::from_ptr(s)}; + match cs.to_str() { + Ok(msg) => println!("{}", msg), + Err(_) => println!("[invalid UTF-8]"), + } + } +} + +#[unsafe(no_mangle)] +pub extern "C" fn rust_mylib_add(a: usize, b: usize) -> usize { + a + b +}
\ No newline at end of file |
