Форум программистов, компьютерный форум, киберфорум
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. Показов 16422. Ответов 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
Ответ Создать тему
Новые блоги и статьи
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
Запись в регистр сведений независимо от заполненности табличной части
Maks 25.08.2026
Реализация из решения ниже выполнена на нетиповом документе с несколькими табличными частями, разработанного в КА2. Задача: Обеспечить запись документа в регистр сведений независимо от. . .
Ноутбук Альфария
kumehtar 24.08.2026
Встретился тут в сети ноутбук Альфария, примарха Альфа-Легиона. Хотя возможно, это ноутбук Омегона, разумеется. Ну как вам?
Мастера простых решений
DevAlt 23.08.2026
В сишарп стэках winforms, да и wpf существует сложная система связывания источниках данных и элементов формы(текстовые поля и метки), опирается все это на технологию событий и мета. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru