summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Robertson <dan@dlrobertson.com>2019-02-24 22:40:49 +0000
committerDan Robertson <dan@dlrobertson.com>2019-02-27 10:21:45 -0500
commit1a6e9e24083c3250f76ca1ad6a0142d9ab3223d0 (patch)
tree345654909f088210547352af7c67e2da97cf2cad
parent210c6071b02db76900d55e00bd46ee91285c3a07 (diff)
downloadrust-1a6e9e24083c3250f76ca1ad6a0142d9ab3223d0.tar.gz
Add c_variadic to the unstable-book
- Add the c_variadic language feature - Add the c_variadic library feature
-rw-r--r--src/doc/unstable-book/src/language-features/c-variadic.md24
-rw-r--r--src/doc/unstable-book/src/library-features/c-variadic.md26
2 files changed, 50 insertions, 0 deletions
diff --git a/src/doc/unstable-book/src/language-features/c-variadic.md b/src/doc/unstable-book/src/language-features/c-variadic.md
new file mode 100644
index 00000000000..9e7968d906f
--- /dev/null
+++ b/src/doc/unstable-book/src/language-features/c-variadic.md
@@ -0,0 +1,24 @@
+# `c_variadic`
+
+The tracking issue for this feature is: [#44930]
+
+[#44930]: https://github.com/rust-lang/rust/issues/44930
+
+------------------------
+
+The `c_variadic` language feature enables C-variadic functions to be
+defined in Rust. The may be called both from within Rust and via FFI.
+
+## Examples
+
+```rust
+#![feature(c_variadic)]
+
+pub unsafe extern "C" fn add(n: usize, mut args: ...) -> usize {
+ let mut sum = 0;
+ for _ in 0..n {
+ sum += args.arg::<usize>();
+ }
+ sum
+}
+```
diff --git a/src/doc/unstable-book/src/library-features/c-variadic.md b/src/doc/unstable-book/src/library-features/c-variadic.md
new file mode 100644
index 00000000000..77762116e6b
--- /dev/null
+++ b/src/doc/unstable-book/src/library-features/c-variadic.md
@@ -0,0 +1,26 @@
+# `c_variadic`
+
+The tracking issue for this feature is: [#44930]
+
+[#44930]: https://github.com/rust-lang/rust/issues/44930
+
+------------------------
+
+The `c_variadic` library feature exposes the `VaList` structure,
+Rust's analogue of C's `va_list` type.
+
+## Examples
+
+```rust
+#![feature(c_variadic)]
+
+use std::ffi::VaList;
+
+pub unsafe extern "C" fn vadd(n: usize, mut args: VaList) -> usize {
+ let mut sum = 0;
+ for _ in 0..n {
+ sum += args.arg::<usize>();
+ }
+ sum
+}
+```