From e6e92d2c9be2788072caa9bf30ae79bdb7664882 Mon Sep 17 00:00:00 2001 From: Sergey Matveev Date: Wed, 14 Jan 2026 14:35:14 +0300 Subject: [PATCH] =?utf8?q?Rust=20=D0=B2=20Linux:=20=D1=80=D0=B0=D0=B7?= =?utf8?q?=D0=BD=D0=B8=D1=86=D0=B0=20=D0=B8=D0=B4=D0=B5=D0=BE=D0=BB=D0=BE?= =?utf8?q?=D0=B3=D0=B8=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit https://felipec.wordpress.com/2025/02/13/rust-not-for-linux/ https://rust-unofficial.github.io/too-many-lists/ Автор статьи рассуждает о Rust в Linux: что это, в первую очередь, спор идеологий. Автор трогал Rust и заявляется что в нём нельзя сделать связанные списки. А в Linux их 10k+. Если Rust нацеливается заменить Си, то он должен мочь выполнять те же самые задачи. Rust люди постоянно любят говорить другим что им надо делать, как что-либо надо делать. И они говорят о том, что просто не надо использовать связанные списки. Вот так вот просто. Ещё приводит пример простой структуры на Си и Rust: C: struct person { char name[50]; int age; struct person *boss; }; struct person john = { .name = "John Doe", .age = 25 }; Rust: struct Person<'a> { name: &'a str, age: u32, boss: Option<&'a Person<'a>>, } let john = Person { name: "John Doe", age: 25, boss: None }; причём в Си это же самое определение структуры может использоваться и для переменных как в стэке, так и куче. В Rust же нужно другую структуру написать для использования в куче. Си-шники обычно предлагают какое-то рабочее решение, которое после оценок, если годится и хорошее, начинает внедряться в Linux. Типа снизу вверх внедрение идёт. Rust хотят услышать слово подтверждения от Линуса, и только после этого начинать вносить правки в ядро. Типа сверху вниз внедрение. Последователи Rust ведут себя точно также как и всякие борцы за "they" вместо "she", "main" вместо "master" (думаю, что можно и не сомневаться в том, что эти множества борцов сильно пересекаются между собой) -- агрессивно и активно продавливают (включая угрозы, шантаж) эти изменения в конечный софт/инструменты, вместо того, чтобы люди плавно самостоятельно понимали, принимали и использовали что-то более корректно. Касательно связанных списков в Rust: прочитал статью на которую автор ссылается. Начало мне уже "понравилось": чтобы реализовать список, вам понадобится изучить следующее: * The following pointer types: &, &mut, Box, Rc, Arc, *const, *mut, NonNull(?) * Ownership, borrowing, inherited mutability, interior mutability, Copy * All The Keywords: struct, enum, fn, pub, impl, use, ... * Pattern matching, generics, destructors * Testing, installing new toolchains, using miri * Unsafe Rust: raw pointers, aliasing, stacked borrows, UnsafeCell, variance -- 2.52.0