The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Для ядра Linux предложен драйвер GPIO, написанный на Rust"
Отправлено Ordu, 22-Июл-21 14:36 
> Впрочем, перечитал Ordu - если действительно компилятор на это подчёркивание смотрит, решение
> довольно странное, более логично было-бы его подкрашивать через ключевое слово, имхо.

Это могло бы быть логичным в C или в C++. Поэтому в них есть __attribute__((unused)). В расте это не логично. Потому как:

1. Раст настаивает на том, чтобы неиспользуемые переменные были бы помечены как неиспользуемые. Местами он задалбывает этим хуже некуда, когда у тебя неиспользуемость временна, и ты компиляцию используешь только чтобы проверить наполовину написанный кусок кода. Или если ты закомментировал половину кода, чтобы посмотреть на то как будет работать без неё. Писать __attribute__((unused)) к каждой переменной, которая не используется, бррр

А как насчёт такого (допустим, что open там возвращает не -1 в случае ошибки, а очень по растовому Err(some_error), а в случае успеха -- Ok(file_descriptor)):

let filedesc = match open(file_name, O_APPEND) {
     Ok(fd) => fd,
     Err(_) => panic!("I cannot open file {:?}. I'm panicking now and going to die soon.", file_name),
};

Видишь там Err(_)? Это тоже деструктуризация, на этот раз в процессе паттерн-матчинга, и это тоже объявление неиспользуемой переменной. можно было бы написать Err(_error) например. Если ты там не обозначишь переменную как неиспользуемую, то раст начнёт тебя клевать, мол, "переменная не используется". И что, ещё туда вставлять __attribute__((unused))? Как ты потом читать будешь всё это?

2. Компилятор раста, хоть и любит заклёвывать своим перфекционизмом, очень заботливый, и если ты, читая RustBook не обратил внимания на _ или обратил, но забыл потом, то он по-ходу дела объяснит тебе, как и когда его использовать. Если б он не был таким заботливым, я подозреваю, растоманов было бы в разы меньше, потому как через несколько часов возни с компилятором, ведущим себя как дятел-перфекционист, они бы разбили бы себе мониторы и растоптали бы свои клавиатуры. С рядах растоманов остались бы только 100% флегматики, абсолютно неспособные к эмоциям.

А, и ещё, ежели тебе кажется, что трактовать имена переменных с определённым префиксом специальным образом, это изобретение rust'а, то опять это не так. В Common Lisp'е имена символов начинающиеся с : в начале автоматически имеют себя в качестве своего значения, их поэтому можно использовать как символические ключи в парах (ключ значение), не парясь о том, чтобы квотировать их дописывая ' в начале. То есть это вроде как и переменная, но сколько бы раз в процессе вычислений на эту переменную не выполнялся бы eval, она от этого не изменится. Очень удобно. Можно было бы ключами использовать строки, типа ("ключ" значение), но там ряд неудобств возникает: кавычек много писать надо, и :ключ будет иметь ровно одну копию в памяти, в то время как строк "ключ" может быть создано сколько угодно, и хоть они и будут равны друг-другу, но они будут разными объектами, занимающими память, и проверять на равенство их каждый раз придётся посимвольно, то есть со сложностью O(N), вместо O(1).

Тоже кстати дискриминация: почему я не могу называть свои переменные с именем, начинающимся с двоеточия? =)

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, [email protected] (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру