Module interoptopus::lang::c[][src]

Expand description

Canonical, almost-C representation of items in an FFI boundary.

The types in here are the Library building blocks with which a C API can be built. In addition, they contain a few extra, non-C elements (e.g., namespaces, patterns), all of which however can reasonably be mapped to or ignored in C.

Except for special circumstances (e.g., when implementing CTypeInfo for a type you don’t own; or when writing your own backend) you will not need any of the items in this module. In most cases the types here are automatically generated by an attribute; and later consumed by a backend.

Structs

A (C-style) type[N] containing a fixed number of elements of the same type.

Used for Rust and C struct with named fields, must be #[repr(C)].

A Rust const definition with a name and value, might become a #define.

Markdown generated from the /// you put on Rust code.

A (C-style) enum containing numbered variants.

Fields of a CompositeType.

Represents extern "C" fn() types in Rust and (*f)(). in C.

A named, exported #[no_mangle] extern "C" fn f() function.

Represents multiple in and a single out parameters.

Additional information for user-defined types.

A named struct that becomes a fieldless typedef struct S S; in C.

Parameters of a FunctionSignature.

Variant and value of a EnumType.

Enums

A type that can exist at the FFI boundary.

The value of a constant.

A primitive type that natively exists in C and is FFI safe.

A primitive value expressible on C-level.

Doesn’t exist in C, but other languages can benefit from accidentally using ‘private’ fields.