Добавить объявление

Сравнение замыканий в Rust и Swift

Сравниваю замыкания в Rust и Swift. Синтаксис разный, но возможности очень похожи.

Синтаксис:


Rust:

let multiply = |x, y| x * y;
let result = multiply(5, 3); // 15

Swift:

let multiply = { (x: Int, y: Int) in x * y }
let result = multiply(5, 3) // 15

Захват значений:


Rust:

let base = 10;
let add_base = |x| x + base;
println!("{}", add_base(5)); // 15

Swift:

let base = 10
let addBase = { (x: Int) in x + base }
print(addBase(5)) // 15

Использование в функциях:


Rust:

fn calculate(a: i32, b: i32, operation: impl Fn(i32, i32) -> i32) -> i32 {
operation(a, b)
}

let result = calculate(4, 2, |x, y| x + y);

Swift:

func calculate(a: Int, b: Int, operation: (Int, Int) -> Int) -> Int {
operation(a, b)
}
let result = calculate(a: 4, b: 2, operation: { $0 + $1 })

Оба языка автоматически захватывают переменные из области видимости и поддерживают автоматический вывод типов, но синтаксис отличается. В Rust замыкания более лаконичные, не нужно указывать слово in, но в Swift есть удобные сокращенные имена параметров ($0, $1).
22.10.2025 11 170