# prefer-expression-initialization

Prefer expression initialization over staged assignments

A binding assigned immediately after its declaration is initialized in two separate places.
Instead, you SHOULD initialize the binding directly from the assigned expression.

- Category: style
- Level: warning
- Fix: none
- Scope: module

## Reported

```ds title="main.ds"
function select(condition: boolean): int32 {
    let result: int32;
    if (condition) {
        result = 1;
    } else {
        result = 2;
    }

    return result;
}
```

## Accepted

```ds title="main.ds"
function select(condition: boolean): int32 {
    const result = if (condition) {
        1
    } else {
        2
    };

    return result;
}
```

## Prior art

- [Clippy · needless_late_init](https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init)

[language/linter/src/rules/style/prefer_expression_initialization.rs:7](https://github.com/destack-sh/destack/blob/main/language/linter/src/rules/style/prefer_expression_initialization.rs#L7)
