Types

Diplomat only supports a small set of types that can be passed over FFI. These are:

More types can be supported in the future (We have issues for iterators and callbacks)

The main distinction to keep track of is between "opaque types" and "structs": opaque types are for when you want to wrap a Rust object that has its own semantics, whereas "structs" are for when you want to transparently pass around multiple values at once (usually when you want to make an options struct as an argument, or return multiple values at once).