The `GdkContentFormats` structure is used to advertise and negotiate the format of content.
You will encounter `GdkContentFormats` when interacting with objects controlling operations that pass data between different widgets, window or
application, like [class@Gdk.Drag], [class@Gdk.Drop], [class@Gdk.Clipboard] or [class@Gdk.ContentProvider].
GDK supports content in 2 forms: `GType` and mime type. Using `GTypes` is meant only for in-process content transfers. Mime types are meant to
be used for data passing both in-process and out-of-process. The details of how data is passed is described in the documentation of the actual
implementations. To transform between the two forms, [class@Gdk.ContentSerializer] and [class@Gdk.ContentDeserializer] are used.
A `GdkContentFormats` describes a set of possible formats content can be exchanged in. It is assumed that this set is ordered. `GTypes` are
more important than mime types. Order between different `GTypes` or mime types is the order they were added in, most important first. Functions
that care about order, such as [method@Gdk.ContentFormats.union], will describe in their documentation how they interpret that order, though in
general the order of the first argument is considered the primary order of the result, followed by the order of further arguments.
For debugging purposes, the function [method@Gdk.ContentFormats.to_string] exists. It will print a comma-separated list of formats from most
important to least important.
`GdkContentFormats` is an immutable struct. After creation, you cannot change the types it represents. Instead, new `GdkContentFormats` have to
be created. The [struct@Gdk.ContentFormatsBuilder] structure is meant to help in this endeavor.