LINUX.ORG.RU

История изменений

Исправление vertexua, (текущая версия) :

Я думаю то, что Rust Book, компилятор Раста и Clippy учать программировать на Rust, и даже на С++ нормально. Ошибки компилятора или подсказки Clippy в большинстве случаев говорят «возможно вы имели ввиду…».

Тут конечно нужно уметь перенаправлять фрустрацию от того что «не компилируется».

Еще есть несколько других фич. Доработаность в многих внезапных мелочах, которые делают программирование приятнее.

Cargo очень удобен и прост. Crates - часто простые юникс-вейные библиотеки, которые обычно без проблем собираются.

Локальный вывод типов работает заглядывая в будущее, смотрит ниже по коду в другие строки. Тип переменной должен быть однозначным только в одном месте, и он распространится на другие места.


fn f() -> u32 { ... }

let mut x = None;   // Уже тут понятно что это Option<u32>

if ... {
   x = Some(f());
}

Еще мне нравится отход от концепции классов и что есть просто структуры и методы отдельно описываются как функции к ним. Например это еще заставляет именовать конструкторы, делать из них фабрики.

let x = Config::from_file("...");

Когда доходит до асинхронного кода, то там очень и очень много цепочек async/await вычислений трансформируется в машины состояний внутри. Futures сделаны совсем не так как везде, очень уникальный и производительный дизайн

Сложно так перечислить, просто по ходу встречаешь разные удобства и каждый раз понимаешь как все продумано

Исправление vertexua, :

Я думаю то, что Rust Book, компилятор Раста и Clippy учать программировать на Rust, и даже на С++ нормально. Ошибки компилятора или подсказки Clippy в большинстве случаев говорят «возможно вы имели ввиду…».

Тут конечно нужно уметь перенаправлять фрустрацию от того что «не компилируется».

Еще есть несколько других фич. Доработаность в многих внезапных мелочах, которые делают программирование приятнее.

Cargo очень удобен и прост. Crates - часто простые юникс-вейные библиотеки, которые обычно без проблем собираются.

Локальный вывод типов работает заглядывая в будущее, смотрит ниже по коду в другие строки. Тип переменной должен быть однозначным только в одном месте, и он распространится на другие места.


fn f() -> u32 { ... }

let mut x = None;   // Уже тут понятно что это Option<u32>

if ... {
   x = Some(f());
}

Еще мне нравится отход от концепции классов и что есть просто структуры и методы отдельно описываются как функции к ним. Например это еще заставляет именовать конструкторы, делать из них фабрики.

let x = Config::from_file("...");

Когда доходит до асинхронного кода, то там очень и очень много цепочек async/await вычислений трансформируется в машины состояний внутри.

Сложно так перечислить, просто по ходу встречаешь разные удобства и каждый раз понимаешь как все продумано

Исправление vertexua, :

Я думаю то, что Rust Book, компилятор Раста и Clippy учать программировать на Rust, и даже на С++ нормально. Ошибки компилятора или подсказки Clippy в большинстве случаев говорят «возможно вы имели ввиду…».

Тут конечно нужно уметь перенаправлять фрустрацию от того что «не компилируется».

Еще есть несколько других фич. Доработаность в многих внезапных мелочах, которые делают программирование приятнее.

Cargo очень удобен и прост. Crates - часто простые юникс-вейные библиотеки, которые обычно без проблем собираются.

Локальный вывод типов работает заглядывая в будущее, смотрит ниже по коду в другие строки. Тип переменной должен быть однозначным только в одном месте, и он распространится на другие места.


fn f() -> u32 { ... }

let mut x = None;   // Уже тут понятно что это Option<u32>

if ... {
   x = Some(f());
}

Еще мне нравится отход от концепции классов и что есть просто структуры и методы отдельно описываются как функции к ним. Например это еще заставляет именовать конструкторы, делать из них фабрики.

let x = Config::from_file("...");

Сложно так перечислить, просто по ходу встречаешь разные удобства и каждый раз понимаешь как все продумано

Исправление vertexua, :

Я думаю то, что Rust Book, компилятор Раста и Clippy учать программировать на С++ нормально. Ошибки компилятора или подсказки Clippy в большинстве случаев говорят «возможно вы имели ввиду…».

Тут конечно нужно уметь перенаправлять фрустрацию от того что «не компилируется».

Еще есть несколько других фич. Доработаность в многих внезапных мелочах, которые делают программирование приятнее.

Cargo очень удобен и прост. Crates - часто простые юникс-вейные библиотеки, которые обычно без проблем собираются.

Локальный вывод типов работает заглядывая в будущее, смотрит ниже по коду в другие строки. Тип переменной должен быть однозначным только в одном месте, и он распространится на другие места.


fn f() -> u32 { ... }

let mut x = None;   // Уже тут понятно что это Option<u32>

if ... {
   x = Some(f());
}

Еще мне нравится отход от концепции классов и что есть просто структуры и методы отдельно описываются как функции к ним. Например это еще заставляет именовать конструкторы, делать из них фабрики.

let x = Config::from_file("...");

Сложно так перечислить, просто по ходу встречаешь разные удобства и каждый раз понимаешь как все продумано

Исходная версия vertexua, :

Я думаю то, что Rust Book, компилятор Раста и Clippy учать программировать на С++ нормально. Ошибки компилятора или подсказки Clippy в большинстве случаев говорят «возможно вы имели ввиду…».

Тут конечно нужно уметь перенаправлять фрустрацию от того что «не компилируется».

Еще есть несколько других фич. Доработаность в многих внезапных мелочах, которые делают программирование приятнее.

Cargo очень удобен и прост. Crates - часто простые юникс-вейные библиотеки, которые обычно без проблем собираются.

Локальный вывод типов работает заглядывая в будущее, смотрит ниже по коду в другие строки. Тип переменной должен быть однозначным только в одном месте, и он распространится на другие места.


fn f() -> u32 { ... }

let mut x = None;   // Уже тут понятно что это Option<u32>

if ... {
   x = Some(f());
}

Еще мне нравится отход от концепции классов и что есть просто структуры и методы отдельно описываются как функции к ним. Например это еще заставляет именовать конструкторы, делать из них фабрики.

let x = Config::from_file("...");