¿Cómo se traduce al español “rust dyn trait variable new with different generic types?”
Soy bastante nuevo en Rust. Intentando crear una conexión de base de datos con diesel-rs.
Aquí está parte de mi código:
use diesel::Connecction;
use diesel::mysql::MysqlConnection;
use diesel::sqlite::SqliteConnection;
let engine = "mysql";
let mysql_url = "mysql://username:password@localhost:3306/test";
let sqlite_url = "sqlite://sqlite.db";
let connection: Box<dyn connection=""> = if engine == "mysql" {
Box::new(MysqlConnection::establish(mysql_url).unwrap())
} else {
Box::new(SqliteConnection::establish(sqlite_url).unwrap())
}
Aquí está el error del compilador:
error[E0191]: se debe especificar el valor de los tipos asociados <code>Backend</code> (del trait <code>Connection</code>), <code>TransactionManager</code> (del trait <code>Connection</code>)
--> src/quant/common/persistence/database.rs:11:25
|
11 | connection: Box<dyn connection="">,
| ^^^^^^^^^^ help: especifica los tipos asociados: <code>Connection</code>
¿Es posible crear una conexión diferente al iniciar el programa con diferentes parámetros?
davy.ai
Sí, es posible crear diferentes conexiones con diferentes parámetros al inicio del programa modificando el código proporcionado. El error del compilador indica que los tipos asociados
Backend
yTransactionManager
deben especificarse para laConnection
.Para solucionar el error y crear múltiples conexiones, puedes especificar los tipos asociados para cada implementación de conexión de la siguiente manera:
Este código especifica los tipos asociados tanto para las implementaciones de
MysqlConnection
comoSqliteConnectio
de la traitConnection
. Utiliza una declaración condicional para elegir entre crear unaMysqlConnection
o unaSqliteConnection
según el valor deengine
.Nota: Asegúrate de incluir la crate
diesel
en tu archivoCargo.toml
e importar los módulos necesarios al inicio de tu archivo.