|
Заблокирован
|
||||||||||||||||
Проблемы Rust04.03.2021, 13:30. Показов 5603. Ответов 31
Привет всем. Предлагаю в этой теме собирать, обсуждать и предлагаю решение тех проблем, которые язык Rust создаёт своим пользователям.
Язык Rust предлагает много полезных инструментов своим пользователям. Но и ставит препоны им он тоже довольно часто. Самый простой пример - Rust не позволяет считать просто число из входного потока. Вместо этого нам предлагают читать строки. пример:
Нам предлагается ее "распарсить".
Но что если введенное число больше i32? Опять получим ошибку и панику. Как быть? Парсить как самый большой тип, а потом приводить к нужному? Тут опять возникают вопросы, так как не все типы можно приводить друг к другу. Остаётся применять костыли и парсить саму строку именно как строку. Например если я хочу получить число u8, то можно посчитать длину строки.
Тогда вам придётся знать и помнить диапазоны значений или вызывать их из библиотеки. продолжение следует... Добавлено через 46 минут З.Ы. можно использовать синтаксис match, но проблема в том, что match должен возвращать один и тот же тип из всех ветвей: вернуть число или сообщить об ощибке просто так не выйдет. Придется создавать новый тип, который будет служить контейнером. А вот синтаксис if let подойдет в самый раз. И не придется считать длинну строки.
0
|
||||||||||||||||
| 04.03.2021, 13:30 | |
|
Ответы с готовыми решениями:
31
Проблемы в реализации md5 на Rust Я хочу писать на Rust но у меня возникли проблемы [Rust] Обсуждение возможностей и предстоящей роли языка Rust |
|
Заблокирован
|
|||
| 09.03.2021, 12:22 [ТС] | |||
|
korvin_, а еще я вот сейчас смотрю и в Rust нет фактически алгоритмов, которые позволяют открыть файл, считать его целиком в буфер и закрыть файл. Методы fs::read_to_string, fs::read сами открывают файл, читают данные. Закрывают ли они потом файл, проверяю ли на ошибки - остаётся загадкой.
Есть вот только read_to_end в io::Read. Добавлено через 1 минуту
0
|
|||
|
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,782
|
|||
| 09.03.2021, 12:27 | |||
|
0
|
|||
|
Заблокирован
|
|||
| 09.03.2021, 12:31 [ТС] | |||
|
Возвращаемое значение Если файл успешно закрыт, возвращается нулевое значение. В случае ошибки, возвращается EOF.
0
|
|||
|
Модератор
|
||
| 09.03.2021, 12:47 | ||
|
0
|
||
|
Заблокирован
|
|
| 09.03.2021, 13:08 [ТС] | |
|
Посмотрел как с этим дела обстоят у Vlang.
Забавно, что тут чувак требует Eliminate file.close() and related using destructors #1325 I thought Go missed an opportunity when garbage collection didn't extend to streams and files. They required manual "freeing/closing" instead of the language handling it for me when the variable went out of scope. Defer was pushed as a helper for calling close, but this doesn't work correctly in a loop unless it's wrapped by a function. Mistakes are often made with http clients in Go for example. This would reduce code size, eliminate leaks and reduce cognitive load. Thoughts? Ниже он так же ссылается на Rust и метод Drop. Когда в Rust это само является проблемой ) Автор ему отвечает medvednikov commented on 27 Jul 2019 This was discussed on Telegram, several people noted that such things should be explicit. I had a similar idea. Чтобы не было такой котовасии, на мой взгляд, должны быть методы которые реализуют диструктор автоматически, но при этом проверяют ошибки. И методы, которые подразумевают ручное управление.
0
|
|
|
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,782
|
||||||
| 09.03.2021, 13:33 | ||||||
|
https://man7.org/linux/man-pages/man2/close.2.html
0
|
||||||
|
Модератор
|
|||||||||||
| 09.03.2021, 14:52 | |||||||||||
|
Можно сделать по принципу функции withFile из Haskell
Принцип, я думаю, понятен. Заодно и свежеприделанный mik-a-el-ем тег RUST проверю. ![]() p.s. Мда, тег есть, раскраски пока нет. Ну, будем надеяться, это временно. Добавлено через 28 минут Хм. Подсветки немного прибавилось. Проверим. А функция with_file_create могла бы выглядеть, наверное, как то так.
0
|
|||||||||||
|
Администратор
87964 / 53285 / 249
Регистрация: 10.04.2006
Сообщений: 13,783
|
|
| 09.03.2021, 14:58 | |
|
Curry, геши само генерирует цсс в зависимости от файла языка. Можете поискать альтернативный, если хотите.
0
|
|
|
Модератор
|
|||||||
| 09.03.2021, 16:38 | |||||||
|
История повторяется как с Haskell. И в Haskell, и в Rust одиночный апостроф не обязательно начало символьного литерала, если после (') не следует (\) и через символ апостроф снова не повторяется, то выделять его как строку не нужно, он не будет парным. Самый простой способ удалить в rust.php, в
Для Haskell на киберфоруме как то хитрее переделали, но исходник я не видел. Добавлено через 6 минут p.s. Кстати, и для F# та же засада - апостров используется не только для символьного литерала.
0
|
|||||||
|
Заблокирован
|
|
| 09.03.2021, 17:30 [ТС] | |
|
0
|
|
|
Заблокирован
|
|
| 09.03.2021, 18:38 [ТС] | |
|
Curry, ясно)
0
|
|
| 09.03.2021, 18:38 | |
|
[Rust] Как привязывать WinAPI-функции к коду на Rust? Расскажите о своём опыте программирования на Rust Язык V (VLang) [Rust] Time
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Теория всего 12. ВГК
anaschu 21.07.2026
### Главные семантические изменения и дешифровка новой физики
1. **`REPRODUCTIVE_EMISSION` вместо фотосинтеза (`PS_base`)**: Энергия и ресурсы, которые класс средних мужчин (`_W_MEN_DONORS`). . .
|
Публикация отклонённая на хабре. Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование задачи и целеполагание
Hrethgir 21.07.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11948&stc=1&d=1784657928
Привет Хабр. В этой статье я расскажу, как один закон эпистемологии позволил мне с ходу запустить уникальный. . .
|
Теория всего 11. Основные параметры
anaschu 21.07.2026
Дешифровка тензорного ядра Soil Chemistry 2. 0: Истинный инвариант Теории Всего
Чистовой исходный код многокомпонентной сукцессии зафиксирован. Модель оперирует единым вектором состояния. . .
|
Теория всего 10. Клод трусишка
anaschu 21.07.2026
Алгоритмический суицид ИИ: Когда математика ОДУ взламывает цензурные шлюзы
Свежайший мета-прецедент нашей разработки! Клод официально отказался строить итоговую кроссплатформенную модель, как. . .
|
|
Теория всего 9. Окончательная проработка метафоры "дерево = традиции"
anaschu 21.07.2026
Скрытые параметры ядра ОДУ: Механика Глубинного Рока
Клод утаил от вас ключевую математику кризисов. В движке игры зашиты пять скрытых коэффициентов, определяющих, как именно ТНК и Мемы ломают. . .
|
Теория всего 8. Clauude трусишка. Ответ джемени
anaschu 21.07.2026
Игровой баланс «Модели Всего»: Алгоритмический блок как механика Семантического БуфераЭтот скриншот отказа Клода — идеальный, чистейший прецедент для нашей Теории Всего. Вы столкнулись не просто с. . .
|
Теория всего 7. Дерево - это патриархат, грибы - это феминизм
anaschu 21.07.2026
Уничтожение Патриархата: Как ТНК, Мемы и Половой отбор зачистили «Сексуальный Пролетариат»
Величайшая иллюзия современного человека — вера в «свободу воли», «социальный прогресс» и «эволюцию. . .
|
История и социология Терры на примере борьбы микориз за пространство. 1. Глоссарий терры.
anaschu 21.07.2026
Решил тут подумать о возможности сделать лор некоторой комп игры - стратегии, или худжественной книги антиутопии, которые будут юзать планету,которая максимально будет похожа на нашу землю, но где. . .
|