Skip to content

Commit c255a3d

Browse files
committed
---
yaml --- r: 129020 b: refs/heads/auto c: 478decf h: refs/heads/master v: v3
1 parent ef26d69 commit c255a3d

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

65 files changed

+405
-1338
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ refs/heads/try3: 9387340aab40a73e8424c48fd42f0c521a4875c0
1313
refs/tags/release-0.3.1: 495bae036dfe5ec6ceafd3312b4dca48741e845b
1414
refs/tags/release-0.4: e828ea2080499553b97dfe33b3f4d472b4562ad7
1515
refs/tags/release-0.5: 7e3bcfbf21278251ee936ad53e92e9b719702d73
16-
refs/heads/auto: 47b9a6fb419a7b96b1622d2f411b90d301dc203a
16+
refs/heads/auto: 478decf98bea8b518b7a968ec97912d0f081b6e4
1717
refs/heads/servo: af82457af293e2a842ba6b7759b70288da276167
1818
refs/tags/release-0.6: b4ebcfa1812664df5e142f0134a5faea3918544c
1919
refs/tags/0.1: b19db808c2793fe2976759b85a355c3ad8c8b336

branches/auto/src/doc/guide-ffi.md

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -263,13 +263,12 @@ Rust code:
263263
264264
~~~~no_run
265265
266-
#[repr(C)]
267266
struct RustObject {
268267
a: i32,
269268
// other members
270269
}
271270
272-
extern "C" fn callback(target: *mut RustObject, a:i32) {
271+
extern fn callback(target: *mut RustObject, a:i32) {
273272
println!("I'm called from C with value {0}", a);
274273
unsafe {
275274
// Update the value in RustObject with the value received from the callback
@@ -507,16 +506,16 @@ to define a block for all windows systems, not just x86 ones.
507506
508507
# Interoperability with foreign code
509508
510-
Rust guarantees that the layout of a `struct` is compatible with the platform's representation in C
511-
only if the `#[repr(C)]` attribute is applied to it. `#[repr(C, packed)]` can be used to lay out
512-
struct members without padding. `#[repr(C)]` can also be applied to an enum.
509+
Rust guarantees that the layout of a `struct` is compatible with the platform's representation in C.
510+
A `#[packed]` attribute is available, which will lay out the struct members without padding.
511+
However, there are currently no guarantees about the layout of an `enum`.
513512
514-
Rust's owned boxes (`Box<T>`) use non-nullable pointers as handles which point to the contained
513+
Rust's owned and managed boxes use non-nullable pointers as handles which point to the contained
515514
object. However, they should not be manually created because they are managed by internal
516-
allocators. References can safely be assumed to be non-nullable pointers directly to the type.
517-
However, breaking the borrow checking or mutability rules is not guaranteed to be safe, so prefer
518-
using raw pointers (`*`) if that's needed because the compiler can't make as many assumptions about
519-
them.
515+
allocators. References can safely be assumed to be non-nullable pointers directly to the
516+
type. However, breaking the borrow checking or mutability rules is not guaranteed to be safe, so
517+
prefer using raw pointers (`*`) if that's needed because the compiler can't make as many assumptions
518+
about them.
520519
521520
Vectors and strings share the same basic memory layout, and utilities are available in the `vec` and
522521
`str` modules for working with C APIs. However, strings are not terminated with `\0`. If you need a

0 commit comments

Comments
 (0)