Skip to main content

case

Function case 

Source
pub fn case<'a, V: SQLParam>() -> CaseInit<'a, V>
Expand description

Starts a searched CASE expression.

Add at least one branch with when, then finish with r#else or end. The first branch’s result sets the type of the whole expression; later results must have a compatible type.

§Examples

let group = case()
    .when(gt(users.age, 65), "senior")
    .when(gt(users.age, 17), "adult")
    .r#else("minor");
assert_eq!(
    group.sql(),
    r#"CASE WHEN "users"."age" > ? THEN ? WHEN "users"."age" > ? THEN ? ELSE ? END"#
);

§Type safety

Branches with different result types do not compile:

ⓘ
let wrong = case().when(gt(users.age, 65), "senior").r#else(0);