summaryrefslogtreecommitdiff
path: root/components/rust/examples/modules/example_lib
diff options
context:
space:
mode:
Diffstat (limited to 'components/rust/examples/modules/example_lib')
-rw-r--r--components/rust/examples/modules/example_lib/.gitignore37
-rw-r--r--components/rust/examples/modules/example_lib/Cargo.toml12
-rw-r--r--components/rust/examples/modules/example_lib/src/lib.rs30
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