Форум программистов, компьютерный форум, киберфорум
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. Показов 16392. Ответов 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
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
06.12.2015, 02:23
Студворк — интернет-сервис помощи студентам
tezaurismosis, на мой взгляд Atom несколько более адекватный. Инструкция. Вот так выглядит из-под винды:
Миниатюры
[Rust] Обсуждение возможностей и предстоящей роли языка Rust  
1
Администратор
Эксперт .NET
 Аватар для tezaurismosis
9674 / 4826 / 763
Регистрация: 17.04.2012
Сообщений: 9,665
Записей в блоге: 14
06.12.2015, 07:16  [ТС]
Psilon, во время последнего моего использования, Атом на моей машине запускался ну очень долго и жрал непомерное количество ресурсов (дольше и больше VS 2013 Professional)
Как сейчас с этим дела?
0
Модератор
 Аватар для Curry
5165 / 3527 / 536
Регистрация: 01.06.2013
Сообщений: 7,677
Записей в блоге: 9
06.12.2015, 09:22
Цитата Сообщение от tezaurismosis Посмотреть сообщение
во время последнего моего использования, Атом на моей машине запускался ну очень долго и жрал непомерное количество ресурсов
У меня аналогично. Правда я его для Haskell думал использовать. Сейчас у меня IntelliJ IDEA стоит. В списке плагинов вижу Oxidize "A plugin for Rust in IntelliJ IDEA. Currently contains very little in terms of features, but more will be added in coming versions.". Сам то я Rust не мучаю. Случайно сюда забрёл.
2
Администратор
Эксперт .NET
 Аватар для tezaurismosis
9674 / 4826 / 763
Регистрация: 17.04.2012
Сообщений: 9,665
Записей в блоге: 14
06.12.2015, 09:47  [ТС]
KolodeznyDiver, даже для Visual Studio есть: Visual Rust
Но все эти плагины пока что ничего кроме подсветки кода и создания проекта не поддерживают.

Сейчас нашёл ссылку: Rust and IDEs
Создатели языка планируют изменения в компиляторе и организацию поддержки для IntelliJ, Eclipse и VS
To work with an IDE, the compiler must respond to changes made by the users in milliseconds and be able to cope with incomplete code. To manage this we propose modifying the compiler to support incremental and lazy compilation, and in the long-run, operate as a long-running daemon process. The compiler must also be more robust and be able to continue compilation in the face of parsing and name resolution errors.

We propose a new tool, an 'oracle' which takes input from the compiler, maintains a project-wide view of the code and it's type information, and provides data about the project to IDEs and other tools. The oracle is a long-running daemon and presents an API via IPC.

We hope to provide support for IntelliJ IDEA, Eclipse, and Visual Studio. There are existing projects started in the community for all three of these IDEs. We want to support these efforts however we can. Between these IDEs we should have good platform coverage and cover most programmers' preferences. Depending on how things develop we may focus or broaden our efforts in the future.
2
06.12.2015, 10:08

Не по теме:

Цитата Сообщение от tezaurismosis Посмотреть сообщение
We propose a new tool, an 'oracle'
Хм. Или туда примазалось Oracle Corporation, или они рискуют.

0
06.12.2015, 10:58  [ТС]

Не по теме:

KolodeznyDiver, скорее рискуют и скорее сменят это название. Хоть и данное название соответствует смыслу утилиты.

0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
06.12.2015, 13:16
tezaurismosis, хз, запускается на моей машине секунды 3-4 (i7-5820k, 4x4 GB DDR4 2400MHz quad channel, SSD), ресурсов жрет немного:
Миниатюры
[Rust] Обсуждение возможностей и предстоящей роли языка Rust  
1
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
06.12.2015, 13:21
Цитата Сообщение от tezaurismosis Посмотреть сообщение
Psilon, во время последнего моего использования, Атом на моей машине запускался ну очень долго и жрал непомерное количество ресурсов (дольше и больше VS 2013 Professional)
Как сейчас с этим дела?
Так что дела хорошо. Есть автодополнение, есть запуск прямо из среды. Короче, получается полноценная IDE: подсветка кода + сборка по F5 (правда по другому сочетанию, но после EMACSа я не удивляюсь ).
Загружается явно быстрее студии, хотя конечно для текстового редактора долго. Но если относиться к нему как к IDE, то нормально Когда я случайно начинаю XML открывать студией мне становится более печально
0
Администратор
Эксперт .NET
 Аватар для tezaurismosis
9674 / 4826 / 763
Регистрация: 17.04.2012
Сообщений: 9,665
Записей в блоге: 14
06.12.2015, 18:30  [ТС]
Psilon, вполне возможно, что на винде установлю, раз дела стали лучше.
То, что с ним дела стали лучше говорит и улучшение производительности Visual Studio Code (хоть и косвенно), основанной на Атоме.
Цитата Сообщение от Psilon Посмотреть сообщение
после EMACSа я не удивляюсь
Да, там интересные сочетания клавиш. Его даже не рекомендуют людям с туннельным синдромом.
Как кстати емакс с растом? Также подсветка + автодополнение через Racer + автоотступы?

Не по теме:

Да чё было мелочится открытыми разом линейкой и халвой - надо было ещё крузис свернуть, в трёх экземплярах :D

0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
06.12.2015, 19:28
Цитата Сообщение от tezaurismosis Посмотреть сообщение
Да, там интересные сочетания клавиш. Его даже не рекомендуют людям с туннельным синдромом.
Как кстати емакс с растом? Также подсветка + автодополнение через Racer + автоотступы?
Хз, я емаксом последний раз пользовался года 2-3 назад, когда лисп изучал

Не по теме:

Цитата Сообщение от tezaurismosis Посмотреть сообщение
Да чё было мелочится открытыми разом линейкой и халвой - надо было ещё крузис свернуть, в трёх экземплярах
ла2 не мои :) Просто меня попросили ставить, чтобы гномы торговали, а халву вот перепрохожу :)

0
Администратор
Эксперт .NET
 Аватар для tezaurismosis
9674 / 4826 / 763
Регистрация: 17.04.2012
Сообщений: 9,665
Записей в блоге: 14
18.12.2015, 23:10  [ТС]
Так как сейчас для Rust'а использую Kate, подогнал цветовую схему, используемую в документации, к этому редактору. Файл со схемой прилагаю к сообщению.
Вот что получилось:



Постарался подогнать, насколько это возможно. Что не получилось - отдельная подсветка для mut - Kate считает его простым ключевым словом. Под себя изменил только одно - цвет элементов перечисления. Кирпичный цвет, используемый в документации, сильно бросается в глаза и Ok(num) => num выглядит приятнее, чем Ok(num) => num.

Для тех, кто хочет сделать такую же схему для другого редактора, привожу здесь цвета:

Normal text: #1f1c1b
Keyword: #8959a8
Type: #4271ae
Trait == Normal text
Constant (enum): #5e9766
Comment: #8e908c
Number: #718c00
String == Number
Macro: #3e999f
Attribute: #c82829

Фон: #f7f7f7

Шрифт: Source Code Pro, 10
Вложения
Тип файла: zip Rust.katehlcolor.zip (544 байт, 0 просмотров)
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
23.12.2015, 14:08
http://habrahabr.ru/post/272681/
0
 Аватар для Anklav
447 / 305 / 47
Регистрация: 23.01.2013
Сообщений: 661
25.01.2016, 23:02
Тоже решил разобраться с языком, возможности выглядят многообещающе. Единственное чего на первый взгляд не хватает - это наследование структур, но вроде они собираются запилить его.
0
 Аватар для Anklav
447 / 305 / 47
Регистрация: 23.01.2013
Сообщений: 661
28.01.2016, 22:57
Язык также построен таким образом, что не получается сохранить 1ую вложенность.
Я люблю такой подход, потому что он позволяет читать код более менее сверху в низ, хотя естественно тут можно поспорить.

Например в стандартных языках, например C#, обычно можно писать так:

C#
1
2
3
4
5
6
7
8
9
10
11
12
      foreach (var i in Enumerable.Range(0, 100))
      {
        var data = GetSomeData(i);
        if (data == null)
          continue;
 
        //Возможно еще несколько таких проверок
 
        var result = data.SomeWork();
        if (result != null)
          break;
      }
В Rust это выглядит так:
C++
1
2
3
4
5
6
7
8
9
10
        for i in 1..100 {
            if let Some(data) = get_some_data(i) {
 
                //Возможно еще несколько таких проверок
                
                if let Some(result) = data.some_work() {
                    
                }
            }
        }
Добавлено через 48 минут
Ну и разговор о том что убрали null ref не совсем верен. Его просто заменили на энамы и как мне кажется в большинстве случаев будет вместо него падать panic! из какого нибудь unwrap.
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
29.01.2016, 12:17
Anklav, в Rust есть continue и break, что еще нужно?

Добавлено через 4 минуты
Цитата Сообщение от Anklav Посмотреть сообщение
Ну и разговор о том что убрали null ref не совсем верен. Его просто заменили на энамы и как мне кажется в большинстве случаев будет вместо него падать panic! из какого нибудь unwrap.
Не будет. Проще написать проброс выше, чем unwrap. Сравни сам, просто падаем в панику:
C++
1
2
3
4
5
fn write_to_file_errors_ignored() {
    let mut file = File::create("my_best_friends.txt").unwrap();
    file.write_all(b"This is a list of my best friends.").unwrap();
    println!("I wrote to the file");
}
Корректно обрабатываем:
C++
1
2
3
4
5
fn write_to_file_errors_ignored() -> Result<(), io::Error> {
    let mut file = try!(File::create("my_best_friends.txt"));
    try!(file.write_all(b"This is a list of my best friends."));
    println!("I wrote to the file");
}
0
 Аватар для Anklav
447 / 305 / 47
Регистрация: 23.01.2013
Сообщений: 661
29.01.2016, 21:53
Цитата Сообщение от Psilon Посмотреть сообщение
Anklav, в Rust есть continue и break, что еще нужно?
Ну да, есть. Но я не понял как мне написать этот код без вложенности. Можно конечно макрос написать... Но это все наверное мелочи, надо просто привыкнуть
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
29.01.2016, 22:14
Anklav, я периодически переставляю винду (инсайдер, чтоб его ), поэтому сейчас у меня атома нет. Как раз начал его настраивать, на выходных поковыряюсь, но мне кажется, что код который шарповый точно также переписывается на раст.

Добавлено через 2 минуты
Anklav, http://is.gd/d50Ujv
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
fn main() {
    for i in 1..100 {
        if i % 3 == 0 
        {
           continue;
        }
        if i == 10
        {
           break;
        }
        println!("{}", i);
    }
}
0
 Аватар для Anklav
447 / 305 / 47
Регистрация: 23.01.2013
Сообщений: 661
29.01.2016, 22:27
Psilon, этот код - понятно. Я про такой говорю http://is.gd/Fxot9y. Естественно нужно представить что те методы могут вернуть None.

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
fn main() {
    for i in 1..100 {
        
        if let Some(data) = some_data::get_some_data() {
            if let Some(result) = data.some_work(i) {
                if result > 80 {
                    break;
                }
            }
        }
        
        println!("{}", i);
    }
}
 
mod some_data
{
    pub struct SomeData {
        value : i32
    }
    
    impl SomeData {
        pub fn some_work(&self, i : i32) -> Option<i32> {
            Some(self.value + i)
        }
    }
    
    pub fn get_some_data() -> Option<SomeData> {
        Some(SomeData { value : 50 })
    }
}
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
30.01.2016, 11:29
Anklav, пробовал макрос and_then?

Добавлено через 10 часов 2 минуты
C++
1
2
3
4
5
6
7
8
9
10
11
fn main() {
    for i in 1..100 {
 
        if let Some(result) = some_data::get_some_data()
                              .and_then(|data| data.some_work(i)) {
            if result > 80 {
                break;
            }
        }
    }
}
0
 Аватар для Anklav
447 / 305 / 47
Регистрация: 23.01.2013
Сообщений: 661
30.01.2016, 15:14
Psilon, в принципе я хотел сделать что то вроде этого (http://is.gd/iisGbi), забыл что match возвращает результат и поэтому не получилось

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    for i in 1..100 {
        
        let data = match some_data::get_some_data() { 
            Some(d) => d, None => continue 
        };
        
        let result = match data.some_work(i) {
            Some(r) => r, None => continue
        };
        
        if result > 80 {
            break;
        }
 
        println!("{}", i);
    }
С макросом можно как то так (http://is.gd/X9JeVy):

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
macro_rules! try_continue(
    ($e:expr) => (match $e { Some(e) => e, None => continue })
);
 
fn main() {
    for i in 1..100 {
        
        let data = try_continue!(some_data::get_some_data());
        let result = try_continue!(data.some_work(i));
 
        if result > 80 {
            break;
        }
 
        println!("{}", i);
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.01.2016, 15:14

[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`. ...


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

Или воспользуйтесь поиском по форуму:
120
Ответ Создать тему
Новые блоги и статьи
Ноутбук Альфария
kumehtar 24.08.2026
Встретился тут в сети ноутбук Альфария, примарха Альфа-Легиона. Хотя возможно, это ноутбук Омегона, разумеется. Ну как вам?
Мастера простых решений
DevAlt 23.08.2026
В сишарп стэках winforms, да и wpf существует сложная система связывания источниках данных и элементов формы(текстовые поля и метки), опирается все это на технологию событий и мета. . .
Цена ошибки
DevAlt 23.08.2026
Человек я беспокойный и потому заинтересовался OCaml, в чате форсили функторы модулей как суперфичу. Пытаясь отдуплить концепт, наткнулся на тутор с простым примером. А главный принцип обучения от. . .
Сегодня суббота, 22.08.2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины.
zorxor 22.08.2026
Сегодня суббота, 22. 08. 2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины. Кто Я, откуда Я пришел и куда Я иду? Эти вопросы не оставляют меня ни на секунду. Жизнь на планете Земля. . .
Жизня: рисунок укладки багажа, сделанный клодом
anaschu 21.08.2026
Сделал 15 снимков, он по снимкам сделал схему.
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства. Жизнь действительно предъявляет каждому. . .
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
Лето уходит
kumehtar 17.08.2026
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru