Size: a a a

2021 December 25

VG

Vadim Goncharov in pro.vim
можно было бы, хотя раст хуже, пожалуй
источник

Ю

Юрий in pro.vim
С растом не знаком, потому не могу оценить оправданость претензий. Но то, как статья написана, лишает ее всякой ценности. Это не критика, это злобные вопли обиженного
источник

VG

Vadim Goncharov in pro.vim
да нет, не "просто", там почти всё по делу
источник

VG

Vadim Goncharov in pro.vim
чушь какая
источник

GK

Georgy Komarov in pro.vim
Я не увидел его поинта. Показалось, что чувак просто не шарит.
Да, синтаксис говно.
Да, абстракции стандартной библиотеки инкапсулируют сложную логику, поэтому нужно понимать, что происходит под капотом.

Что я упустил?
источник

Ю

Юрий in pro.vim
Нет. Статья вся брызжет злобой и раздражением. Даже если все по делу, можно было написать то же самое спокойнее. Пользы было бы больше. А в таком виде получается "ваш раст говно, потому что мне не нравится, и похрен на докащательства"
источник

VG

Vadim Goncharov in pro.vim
Переслано от Vadim Goncharov
А вот следующая программа внезапно не откомпилируется:

fn sumtop(v: Vec<i32>) -> i32 {
   return v[0] + v[1];
}
fn main() {
   let v = vec![1, 2, 3];
   let res = sumtop(v);
   println!("{} + {} = {}", v[0], v[1], res);
}

Что произошло? В Rust параметры примитивных типов передаются копированием, а все остальные перемещаются (move), при этом передающая их функция теряет их из своего владения. Таким образом, передав v в sumtop, мы потеряли его из своего владения, и дальнейшие обращения к v вызовут ошибку.
источник

VG

Vadim Goncharov in pro.vim
Переслано от Vadim Goncharov
блядь щито?..
источник

VG

Vadim Goncharov in pro.vim
Переслано от Vadim Goncharov
а хули было его не скопировать-то
источник

VG

Vadim Goncharov in pro.vim
Переслано от Vadim Goncharov
> Иначе говоря, владение и перемещение позволяют динамически определять области видимости переменных — тем самым практически полностью уничтожая смысл блоков, то есть составных операторов.

а тут претензия автора странная, если вспомнить Perl...
источник

VG

Vadim Goncharov in pro.vim
Переслано от Vadim Goncharov
   let a = "Hi".to_string();
   let b = "guys".to_string();

ээ, а хули оно сразу не строка-то? чот автор зря не пнул за это!
источник

VG

Vadim Goncharov in pro.vim
Переслано от Vadim Goncharov
В Rust такая программа не скомпилируется, ведь для res не будет известно его время жизни. Подождите, но за время жизни же отвечало владение? — скажет разумный человек. Но в Rust на самом деле есть отдельная сущность времени жизни, и ею можно управлять из программы. Мы можем переписать longest, и тогда компиляция произойдёт успешно:

fn longest<'a>(a: &'a str, b: &'a str) -> &'a str {
   if a.len() < b.len() { a } else { b }
}
источник

VG

Vadim Goncharov in pro.vim
Переслано от Vadim Goncharov
вот же res в конце скоупа можно освободить, хули неизвестно-то
источник

VG

Vadim Goncharov in pro.vim
Переслано от Vadim Goncharov
let person = Person::new(name.clone());

блядь, а клонировать-то зачем, если рефкаунт уже есть?
источник

VG

Vadim Goncharov in pro.vim
вот мои комментарии по мере чтения
источник

VG

Vadim Goncharov in pro.vim
> вся брызжет злобой и раздражением

где?

> написать то же самое спокойнее

где?

> потому что мне не нравится, и похрен на докащательства"

ты дурак? там почти вся статья из примеров кода, т.е. доказательств
источник

GK

Georgy Komarov in pro.vim
А мне нравится отсутствие явного копирования. В плюсах очень редко требуется копировать сложные структуры данных при передаче в функции. Хорошо сделать такое копирование явным.
источник

VG

Vadim Goncharov in pro.vim
об этом он пишет буквально в следующем абзаце
источник

Ю

Юрий in pro.vim
"Сказки о невероятных удобствах и возможностях макросов, якобы позволяющих перенести в компайлтайм любое вычисление, рушатся уже на этапе написания первой программы на этом удивительном языке!"
Хотя бы вот это. Мелочь, но это не серьезная критика, это базарный наезд.
И не надо хамить незнакомому человеку.
источник

GK

Georgy Komarov in pro.vim
Что именно? Про реализацию move-семантики?
источник