rocket_db_pools

Derive Macro Database

#[derive(Database)]
{
    // Attributes available to this derive:
    #[database]
}
Expand description

Automatic derive for the Database trait.

use rocket_db_pools::Database;

#[derive(Database)]
#[database("database_name")]
struct Db(PoolType);

The derive generates an implementation of Database as follows:

  • Database::NAME is set to the value in the #[database("name")] attribute.

    This names the database, providing an anchor to configure the database via Rocket.toml or any other configuration source. Specifically, the configuration in databases.name is used to configure the driver.

  • Database::Pool is set to the wrapped type: PoolType above. The type must implement Pool.

To meet the required Database supertrait bounds, this derive also generates implementations for:

  • From<Db::Pool>

  • Deref<Target = Db::Pool>

  • DerefMut<Target = Db::Pool>

  • FromRequest<'_> for &Db

  • Sentinel for &Db

The Deref impls enable accessing the database pool directly from references &Db or &mut Db. To force a dereference to the underlying type, use &db.0 or &**db or their &mut variants.