Форум программистов, компьютерный форум, киберфорум
Rust
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.67/67: Рейтинг темы: голосов - 67, средняя оценка - 4.67
Администратор
Эксперт .NET
 Аватар для tezaurismosis
9674 / 4826 / 763
Регистрация: 17.04.2012
Сообщений: 9,665
Записей в блоге: 14

[Rust] Обсуждение возможностей и предстоящей роли языка Rust

12.02.2015, 04:38. Показов 16480. Ответов 121
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Psilon, чем он тебя так привлек? И почему именно "убийца плюсов"?
Если напишешь развернутый ответ, обещаю вынести в отдельную тему и погонять компилятор пару часов дабы вступить в полемику
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.02.2015, 04:38
Ответы с готовыми решениями:

[Rust] Как привязывать WinAPI-функции к коду на Rust?
Может кто-нить дать код, КАК привязывать вин апишные функции к растовскому коду (на примере MesageBox). ...

Расскажите о своём опыте программирования на Rust
Доброе утро! Расскажите, пожалуйста, о своём опыте программирования на Rust. Можно в сравнении с C# или Delphi. Спасибо.

Обсуждение возможностей языка D
В данной теме я предлагаю обсуждать интересные (и не очень) возможности языка D, делиться кодом и рассказывать про ваши программы,...

121
Администратор
Эксперт .NET
 Аватар для tezaurismosis
9674 / 4826 / 763
Регистрация: 17.04.2012
Сообщений: 9,665
Записей в блоге: 14
06.04.2015, 15:08  [ТС]
Студворк — интернет-сервис помощи студентам
Psilon, безусловно хорошая новость (вторая для меня за сегодня, очень порадовал ).
Version 1.0.0-beta (April 2015)
  • ~1100 changes, numerous bugfixes
  • The big news is that the vast majority of the standard library is now #[stable] -- 75% of the non-deprecated API surface at last count. Numerous crates are now running on stable Rust. Starting with this release, it is not possible to use unstable features on a stable build.

rust/RELEASES.md
Теперь на "ящик" std приятно смотреть: http://doc.rust-lang.org/1.0.0-beta/std/#modules (зелёные модули стабильны)
0
Администратор
Эксперт .NET
 Аватар для tezaurismosis
9674 / 4826 / 763
Регистрация: 17.04.2012
Сообщений: 9,665
Записей в блоге: 14
07.04.2015, 14:56  [ТС]
В начале темы я сетовал на размер бинарника, так вот, на Windows он намного больше.
Однако, случайно наткнулся на StackOverflow на следующее - rustc позволяет динамическое линкование библиотек, нужно компилировать вот так:
Bash
1
rustc -C prefer-dynamic hello_world.rs -o dynamic.exe
Результат (simple.exe слинкован статически)



Естественно, dynamic.exe для запуска требует наличия на машине Rust'овских библиотек.
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
07.04.2015, 15:06
tezaurismosis, ты на шарпе видал размер бинарника? Я имею ввиду, когда весь используемый дотнет линкуется статически Я однажды видел - чуть не поседел Думаю, даже когда .Net native родится, экзешник будет весить никак не меньше 5мб.
0
Администратор
Эксперт .NET
 Аватар для tezaurismosis
9674 / 4826 / 763
Регистрация: 17.04.2012
Сообщений: 9,665
Записей в блоге: 14
07.04.2015, 15:30  [ТС]
Цитата Сообщение от Psilon Посмотреть сообщение
Я имею ввиду, когда весь используемый дотнет линкуется статически
Не видел, но предполагаю размеры в сотни мегабайт Исходники управляемой части .NET (не CoreCLR, а .NET Reference Source, как здесь: http://referencesource.microsoft.com/) весят ~50 Мб, что уж говорить про всю платформу сразу и в скомпилированном виде.

Мне, честно говоря, не так важно, 5 Кб весит экзешник или 5 Мб, просто привёл новую для себя информацию.

Добавлено через 12 минут
У меня назрел вопрос по поводу взаимоотношений LLVM и Rust. При описании компиляции кода на Rust постоянно упоминается LLVM, а в Википедии написано (речь о компиляторе Rust'а)
The self-hosted compiler uses LLVM as its backend.
Я, к сожалению, смутно представляю суть LLVM и её отношение к Расту. Кто сможет на пальцах объяснить, как они связаны?
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
07.04.2015, 16:36
Цитата Сообщение от tezaurismosis Посмотреть сообщение
Не видел, но предполагаю размеры в сотни мегабайт Исходники управляемой части .NET (не CoreCLR, а .NET Reference Source, как здесь: http://referencesource.microsoft.com/) весят ~50 Мб, что уж говорить про всю платформу сразу и в скомпилированном виде.
ну не сотни, но вот 30-50 легко Всё же не весь дотнет линкуется, а только заюзанные либы.

CoreCLR вполне достаточно для запуска приложения, на этом вся идея ASP.Net vNext, что каждый веб-сайт может работать на собственном рантайме с собственными либами

Ну а CoreFX я только что сбилдил, для интереса, 1.45ГБ
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
26.05.2015, 12:01
tezaurismosis, ну что, как успехи?

Вот с момента релиза понемогу ковыряю, но все-равно постоянно всякие ошибки Трудно без материалов изучать, первопроходцем быть и все такое... Но что поделать
0
Администратор
Эксперт .NET
 Аватар для tezaurismosis
9674 / 4826 / 763
Регистрация: 17.04.2012
Сообщений: 9,665
Записей в блоге: 14
26.05.2015, 12:15  [ТС]
Psilon, диплом, сбор документов в интернатуру, лень - вот как мои успехи
Всё никак не могу хорошо взяться за дело.
Цитата Сообщение от Psilon Посмотреть сообщение
все-равно постоянно всякие ошибки
Меня эта тема немного удивляет и одновременно радует: https://github.com/rust-lang/rust/issues
Хотя там достаточно дубликатов, проблемы всё-таки решаются.
Из того, что сам сумел - пытался компилировать код с использованием MS-линкера - компилятор упал Не стал писать в ошибки, потому что эта возможность, видимо, просто ещё не реализована.
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
26.05.2015, 13:03
tezaurismosis, да я в песочнице на их сайте смотрю, для 99% задач обучательских хороша - подсветка, понятные ошибки, можно шарить код...

Вот например пытаюсь реализовать добавление в связный список - воюю с компилятором за возможность это запустить

http://is.gd/P3VS1q
1
Администратор
Эксперт .NET
 Аватар для tezaurismosis
9674 / 4826 / 763
Регистрация: 17.04.2012
Сообщений: 9,665
Записей в блоге: 14
26.05.2015, 13:12  [ТС]
Psilon, проще в нём работать - во какая красота - и подсветка есть, и режимы и выбор ветки. Чтож я сразу на него не поглядел.
Atom запускается 2 минуты, если не больше, это жесть.
Вот подумываю написать файл подсветки для EmEditor, пользуюсь им вместо блокнота.
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
26.05.2015, 13:21
tezaurismosis, что касается диплома, то у меня как раз на днях сдача большей его части в пятницу, а растом развлекаюсь на работе, пока проекты деплоятся и все равно делать нечего - виртуалка не самая отзывчивая даже если выделить 8гб памяти ей

подсветка есть для sublime, но я с ним так и не разобрался... Вообще редактор текстовый у меня больная тема - всё никак не слезу с notepad++, который как бы уже перестал меня устраивать по производительности и интерфейсу, но альтернатив пока особо нет - саблайм, вим - всё не то...

погуглил, что за EmEditor - пипец, 150 баксов... Дороговато, однако

кстати, небольшой хороший тутор по расту:
http://aminb.gitbooks.io/rust-... EADME.html
0
zzzZZZ...
 Аватар для dzrkot
527 / 358 / 94
Регистрация: 11.09.2013
Сообщений: 2,041
26.05.2015, 13:24
Цитата Сообщение от Psilon Посмотреть сообщение
подсветка есть для sublime, но я с ним так и не разобрался
а что там разбираться? ставите package manager , ставите с его помощью подсветку, выбираете в синтаксисе Rust , который там появится, всё)
0
Администратор
Эксперт .NET
 Аватар для tezaurismosis
9674 / 4826 / 763
Регистрация: 17.04.2012
Сообщений: 9,665
Записей в блоге: 14
26.05.2015, 13:30  [ТС]
Psilon, а книжица когда написана? Я ещё не дошёл до этого, но вроде бы читал, что все эти типы убрали из 1.0.0 http://aminb.gitbooks.io/rust-... EADME.html (Rc и Gc). Или я неправильно вспомнил?
Я рад, что застал этот язык в относительно устоявшемся состоянии. Статьи старше 2 лет (даже ещё меньше) уже почти не отражают современное развитие языка.
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
26.05.2015, 16:27
tezaurismosis, Rc остался где и был, Gc - хз, есть или нет. Но про Gc он все равно ничего не пишет, кроме того, что они есть - а они скорее всего в будущем появятся.

Добавлено через 4 минуты
dzrkot, ну поставил пакет, у меня добавилось:
JSON
1
2
3
4
5
6
7
8
9
10
{
    "in_process_packages":
    [
    ],
    "installed_packages":
    [
        "Package Control",
        "Rust"
    ]
}
что теперь делать - хз Пока мало гуглил, конечно, но интуитивностью тут не пахнет.

Добавлено через 2 часа 33 минуты
tezaurismosis, таки поборол его
https://play.rust-lang.org/?gi... ion=stable

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
fn own<T>(x: T) -> T 
{ 
    x 
}
 
struct Node
{
    value: i32,
    next: Option<Box<Node>>
}
 
impl Node
{
    fn print(&self)
    {
        let mut current = self;
        loop {
            println!("{}", current.value);
            match current.next {
                Some(ref next) => { current = &**next; },
                None => break,
            }
        } 
    }
    
    fn add(&mut self, node: Node)
    {
        let item = Some(Box::new(node));
        let mut current = self;
        loop {
            match own(current).next {
                ref mut slot @ None => { *slot = item; return },
                Some(ref mut next) => current = next
            }
        } 
    }
}
 
fn main() {  
    let leaf = Node { value: 10, next: None };
    let branch = Node { value : 50, next: Some(Box::new(leaf)) };
    let mut root = Node { value : 100, next: Some(Box::new(branch)) };
    root.print(); 
    
    let new_leaf = Node { value: 5, next: None };
    root.add(new_leaf);
    root.print();
}
0
Администратор
Эксперт .NET
 Аватар для tezaurismosis
9674 / 4826 / 763
Регистрация: 17.04.2012
Сообщений: 9,665
Записей в блоге: 14
26.05.2015, 18:46  [ТС]
Цитата Сообщение от Psilon Посмотреть сообщение
C#
1
2
3
4
fn own<T>(x: T) -> T 
{ 
    x 
}
Интересно...
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
26.05.2015, 19:13
tezaurismosis, это просто функция identity, возвращает аргумент. Это всё хитрости из-за принципов владения, я сам половину понимаю только на интуитивном уровне
0
zzzZZZ...
 Аватар для dzrkot
527 / 358 / 94
Регистрация: 11.09.2013
Сообщений: 2,041
10.06.2015, 17:18
Цитата Сообщение от Psilon Посмотреть сообщение
dzrkot, ну поставил пакет, у меня добавилось:
создай свою build system , запихни туда вот это
JSON
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
{
   "cmd": ["rustc", "${file}", "-o", "${file_path}/${file_base_name}"],
   "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
   "working_dir": "${file_path}",
   "selector": "source.c, source.c++",
   "shell": true,
   "encoding": "1251",
   "variants":
     [
       {
         "name": "Run",
         "cmd": ["rustc", "${file}", "-o", "${file_path}/${file_base_name}", "&&", "start", "${file_path}/${file_base_name}"],
         "shell": true
       }
     ]
}
это под винду, будет запускаться консолька, правда закрывается сразу - поэтому пишем везде
C++ (Qt)
1
2
let input = &mut String::new();
stdin.read_line(input).unwrap();
лично я таким макаром пользуюсь и язык изучаю...


теперь о баранах
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
use std::io;
 
fn main() {
let mut stdin = io::stdin();
let input = &mut String::new();
 
input.clear();
 
let str2 ="23";
let y = str2.parse::<i32>().unwrap();
println!("{}", (y-22));
 
let mut x:i32 = stdin.read_line(input).unwrap().to_string().trim().parse::<i32>().unwrap();
println!("{}",x);
stdin.read_line(input).unwrap();
}
в 1ом случае парсим String , выдираем оттуда число и получаем его в y, выводим - всё ок
во 2ом- вводим его с клавы, и оно видимо парсится вместе с символом конца строки, как от него избавиться...раньше был метод .trim() ....сейчас не катит...
вообщем задача прочитать число введённое с клавы, мб есть способы попроще чем чиатть строку, переводить её в String, парсить итд...?
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
10.06.2015, 18:12
dzrkot, да я думал он бесплатный, как notepad++ или емакс какой-нибудь, а он просит бабок за лицензию. Ну нафиг
0
zzzZZZ...
 Аватар для dzrkot
527 / 358 / 94
Регистрация: 11.09.2013
Сообщений: 2,041
10.06.2015, 18:28
Цитата Сообщение от Psilon Посмотреть сообщение
dzrkot, да я думал он бесплатный, как notepad++ или емакс какой-нибудь, а он просит бабок за лицензию. Ну нафиг
год в нём работаю на С пишу(да да я извращенец) и норм, не парит меня это периодическое сообщение))
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
10.06.2015, 18:46
Цитата Сообщение от dzrkot Посмотреть сообщение
в 1ом случае парсим String , выдираем оттуда число и получаем его в y, выводим - всё ок
во 2ом- вводим его с клавы, и оно видимо парсится вместе с символом конца строки, как от него избавиться...раньше был метод .trim() ....сейчас не катит...
вообщем задача прочитать число введённое с клавы, мб есть способы попроще чем чиатть строку, переводить её в String, парсить итд...?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
use std::io;
 
fn main() {    
    let mut reader: io::Stdin = io::stdin();
    let mut input_text: String = String::new();
    let result: Result<usize, io::Error> = reader.read_line(&mut input_text);
    if result.is_err() {
        println!("failed to read from stdin");
        return;
    }
    let trimmed: &str = input_text.trim();
    let option: Option<i32> = trimmed.parse::<i32>().ok();
    match option {
        Some(i) => println!("your integer input: {}", i),
        None => println!("this was not an integer: {}", trimmed)
    };
 
    let mut tmp: String = String::new();
    reader.read_line(&mut tmp);
}
1
zzzZZZ...
 Аватар для dzrkot
527 / 358 / 94
Регистрация: 11.09.2013
Сообщений: 2,041
10.06.2015, 19:06
Psilon а я так сделал, дома гляну твой вариант...не нравятся мне все эти Result и Option в расте
C#
1
2
3
4
5
6
7
8
fn in_i32()->i32{
    let mut stdin = std::io::stdin();
    let input:&mut String = &mut String::new();
    input.clear();      
    stdin.read_line(input); 
    let x = input.trim().to_string().parse::<i32>().unwrap();
    return x;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.06.2015, 19:06

[Rust] Time
Подскажите как узнать время в Rust. //Rust extern crate time; fn main() { let now = time::get_time(); ...

Rust+assembler
Как связать язык rust и ассемблер не используя ассемблерные вставки(неудобно использовать их в RUSTе)?

Есть ли у rust будущее?
Вот вчера общался с 1 товарищем на тему перспектив С++, он меня убеждает что язык скоро будет терять популярность, что будущее за Go и...

Rust ошибка E0623
при компиляции появляется ошибка E0623 в документации этот номер пропущен. в чём может быть проблема? ошибка: error: lifetime...

Frontend Для RUST
Нужна помощь! Есть класс Participant, в этом классе есть функция new. impl Participant { /// Create a new `Participant`. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
80
Ответ Создать тему
Новые блоги и статьи
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru