aboutsummaryrefslogtreecommitdiff
path: root/docs/markdown/Rust.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/markdown/Rust.md')
-rw-r--r--docs/markdown/Rust.md56
1 files changed, 56 insertions, 0 deletions
diff --git a/docs/markdown/Rust.md b/docs/markdown/Rust.md
new file mode 100644
index 0000000..b2376c3
--- /dev/null
+++ b/docs/markdown/Rust.md
@@ -0,0 +1,56 @@
+---
+title: Rust
+short-description: Working with Rust in Meson
+---
+
+# Using Rust with Meson
+
+## Mixing Rust and non-Rust sources
+
+Meson currently does not support creating a single target with Rust and non Rust
+sources mixed together, therefore one must compile multiple libraries and link
+them.
+
+```meson
+rust_lib = static_library(
+ 'rust_lib',
+ sources : 'lib.rs',
+ ...
+)
+
+c_lib = static_library(
+ 'c_lib',
+ sources : 'lib.c',
+ link_with : rust_lib,
+)
+```
+This is an implementation detail of Meson, and is subject to change in the future.
+
+## Mixing Generated and Static sources
+
+*Note* This feature was added in 0.62
+
+You can use a [[structured_source]] for this. Structured sources are a dictionary
+mapping a string of the directory, to a source or list of sources.
+When using a structured source all inputs *must* be listed, as Meson may copy
+the sources from the source tree to the build tree.
+
+Structured inputs are generally not needed when not using generated sources.
+
+As an implementation detail, Meson will attempt to determine if it needs to copy
+files at configure time and will skip copying if it can. Copying is done at
+build time (when necessary), to avoid reconfiguring when sources change.
+
+```meson
+executable(
+ 'rust_exe',
+ structured_sources(
+ 'main.rs',
+ {
+ 'foo' : ['bar.rs', 'foo/lib.rs', generated_rs],
+ 'foo/bar' : [...],
+ 'other' : [...],
+ }
+ )
+)
+```