(Rust 初心者なので、最良の書き方でない可能性が高いです。)
Python などのプログラミング言語で書く場合、トランザクションでエラーが出た場合に try・catch で例外処理に対応することがあります。Rust では、以下のように、match を用いて例外が発生した場合に対応するのが良さそうです。
let res = diesel::insert_into(data)
.values(new_data)
.execute(&connection);
match res {
Ok(_res) => {}
Err(err) => {
println!("error {:?}", err);
}
}