Crate butane[][src]


For supporting additional types with the Pg backend (or other future backends).

For working with migrations. If using the butane CLI tool, it is not necessary to use these types directly.

Prelude module to improve ergonomics.

Types to support database queries. Most users will use the query!, filter!, and find! macros instead of using this module directly.


Typesafe way to refer to a column name. Use as colname!(MODEL_TYPE, FIELD_NAME). E.g. For a model type Foo with a field bar, colname!(Foo, bar) would return “bar”, but colname!(Foo, bat)would be a compiler error (assumingFoo` does not have such a field.

Macro to construct a BoolExpr (for use with a Query) from an expression with Rust syntax.

Finds a specific database object.

Constructs a filtered database query.


Used to implement a relationship between models.

Used to implement a many-to-many relationship between models.

Used internally by butane to track state about the object.


Butane errors.

Enumeration of the types a database value may take.

A database value.


Trait for referencing the primary key for a given model. Used to implement ForeignKey equality tests.

An object in the database.

A type which may be the result of a database query.

Type suitable for being a database column.

Used to convert a SqlVal or SqlValRef into another type.

Used to convert another type to a SqlVal or SqlValRef.

Type Definitions

Attribute Macros

Attribute macro which marks a type as being available to butane for use in models.

Attribute macro which generates an implementation of DataResult. Continuing with our blog post example from model, we could create a DataResult with only some of the fields from Post (to avoid fetching all of them in a query).

Attribute macro which marks a struct as being a data model and generates an implementation of DataObject. This macro will also write information to disk at compile time necessary to generate migrations