The OpenNET Project / Index page

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

10.10.2014 10:27  Выпуск языка программирования Rust 0.12, развиваемого проектом Mozilla

В преддверии начала подготовки стабильного выпуска языка программирования Rust 1.0, переход к бета-тестированию которого ожидается в конце года, представлен очередной экспериментальный выпуск Rust 0.12.0, продолжающий развитие функциональности и оттачивание языковых конструкций.

Язык Rust развивается проектом Mozilla и сфокусирован на безопасной работе с памятью и обеспечении высокого параллелизма выполнения заданий (возможность порождать тысячи и даже миллионы подпроцессов). Исходные тексты проекта распространяются под лицензией MIT. Параллельно с Rust совместно с компанией Samsung развивается экспериментальный браузерный движок Servo, написанный на языке Rust и отличающийся поддержкой многопоточного рендеринга web-страниц и распараллеливанием операций с DOM (Document Object Model).

По структуре язык Rust напоминает C++, но существенно отличается в некоторых деталях реализации синтаксиса и семантики, а также ориентацией на блочную организацию структуры кода, которая позволяет реализовать задачи в виде легковесных сопрограмм. Автоматическое управление памятью избавляет разработчика от манипулирования указателями и защищает от проблем, возникающих из-за низкоуровневой работы с памятью, таких как обращение к области памяти после её освобождения, разыменование нулевых указателей, выход за границы буфера и т.п. Rust поддерживает смесь императивных процедурных и объектно-ориентированных методов с такими парадигмами, как функциональное программирование и модель акторов, а также обобщённое программирование и метапрограммирование, в статических и динамических стилях.

С момента прошлого выпуска внесено около 1900 изменений, среди которых:

  • Большое внимание уделено подготовке документации. Полностью переписано руководство разработчика (The Rust Guide);
  • Продолжено развитие пакетного менеджера Cargo, который в некоторых ситуациях уже вполне доведён до готовности;
  • Переписаны и приведены в соответствие к требованиям по написанию кода реализации многих API в области std;
  • Вторичные библиотеки вынесены из основного дерева исходных текстов и теперь должны быть установлены через пакетный менеджер Cargo. Среди таких библиотек: uuid, semver, glob, num, hexfloat, fourcc;
  • Возможность определения lifetime-аннотаций в определении функции;
  • Поддержка работы в 64-разрядных версиях Windows;
  • В компиляторе rustc реализована эксперментальная поддержка распараллеливания при указания опции "-C codegen-units";
  • Практически доведена до готовности реализация типов с динамически изменяемым размером (Dynamically-sized), для управления данными типами представлено новое свойство "Sized";
  • Свойство "Share" переименовано в "Sync" для избежания ассоциаций с типом "shared reference";
  • Добавлено новое ключевое слово "move" для индикации замыканий, захватывающих значения;
  • Добавлено новый более эффективный тип замыканий - "unboxed closures";
  • Для переименования выражений теперь следует использовать "use foo as bar" вместо "use bar = foo", а также "extern crate foo as bar" вместо "extern crate bar = foo";
  • Изменён синтаксис (например, "[0..4]", "[a, b, c..]") определения блоков в "Slice" и "SliceMut". Для определения входящих диапазонов теперь следует использовать три точки вместо двух, т.е. "0...4" вместо "0..4";
  • Расширены возможности стандартной библиотеки. Переработаны библиотеки Bit-vectors, collections::bitv и collections::btree. Проведена оптимизация в работе компонентов, связанных с вводом/выводом.

Базовые возможности языка:

  • Ориентация на безопасность:
    • Аккуратная работа с памятью - никаких нулевых и потерянных указателей. Автоматическое управление памятью;
    • Контроль изменчивости. Объекты неизменяемы (Immutable) по умолчанию;
    • Безопасность динамического выполнения: обработка сбоев, исключения, ведение лога, RAII / dtors;
    • Typestate: возможность определения сложных инвариантов, контролирующих структуры данных.
  • Ориентация на параллельность и эффективность кода:
    • Явный контроль памяти, контролирование схемы распределения памяти;
    • Крайне лёгкие задачи, формируемые в виде сопрограмм. Лёгкость в порождении тысяч и миллионов подпроцессов;
    • Итераторы в стэке (фактически лямбда-блоки без распределения кучи);
    • Статическая, нативная компиляция с созданием исполняемых файлов ELF, PE, Mach-o;
    • Прямой и простой интерфейс для кода на языке Си;
  • Ориентация на практическое применение:
    • Мультипарадигмальный, функциональный, императивно-процедурный, объектно-ориентированный, поддерживающий параллельную actor-модель;
    • Функции высшего порядка с биндингами;
    • Нет номинальных типов или иерархии типов;
    • Мультиплатформенный, поддерживается Windows, Linux, Mac OS X, *BSD;
    • Хранение строк в UTF-8, разнообразие низкоуровневых типов;
    • Работает с существующими нативными наборами инструментов: GDB, Valgrind, Shark и т.д.;
    • Практическая возможность нарушения правил: возможность игнорирования правил безопасности, если чётко указано, когда и как их нарушать.


  1. Главная ссылка к новости (https://mail.mozilla.org/piper...)
  2. OpenNews: Выпуск языка программирования Rust 0.11, развиваемого проектом Mozilla
  3. OpenNews: Подготовлен вариант GNU Coreutils, переписанный на языке Rust
  4. OpenNews: Выпуск языка программирования Rust 0.10, развиваемого проектом Mozilla
  5. OpenNews: Для GCC подготовлен фронтэнд с поддержкой языка Rust, развиваемого проектом Mozilla
Лицензия: CC-BY
Тип: Программы
Ключевые слова: rust
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение Ajax/Линейный | Показать все | RSS
 
  • 1.1, Аноним, 10:45, 10/10/2014 [ответить] [смотреть все]    [к модератору]
  • +1 +/
    systemd уже переписали на rust?
     
     
  • 2.2, qqqq, 10:49, 10/10/2014 [^] [ответить] [смотреть все] [показать ветку]    [к модератору]
  • +4 +/
    не, пока тлько core utils - https://github.com/uutils/coreutils
     
     
  • 3.17, Аноним, 14:36, 10/10/2014 [^] [ответить] [смотреть все]    [к модератору]
  • +2 +/
    куда катится этот мир
     
     
  • 4.19, Аноним, 15:59, 10/10/2014 [^] [ответить] [смотреть все]    [к модератору]
  • +4 +/
    Вы против безопасности в утилитах, которые установлены повсеместно?
     
     
  • 5.25, Мяут, 18:02, 10/10/2014 [^] [ответить] [смотреть все]     [к модератору]
  • –1 +/
    Уязвимости обычно возникают, там где вносится много новой функциональности Shel... весь текст скрыт [показать]
     
     
  • 6.27, Аноним, 18:30, 10/10/2014 [^] [ответить] [смотреть все]     [к модератору]  
  • +2 +/
    Помимо перечисленного, есть специфичные для языков уязвимости Выход за пределы ... весь текст скрыт [показать]
     
     
  • 7.55, Мяут, 18:56, 13/10/2014 [^] [ответить] [смотреть все]    [к модератору]  
  • –1 +/
    Конечно, они есть. Но в случае с вылизанными coreutils - ИМХО они маловероятны.
     
  • 5.32, Аноним, 21:18, 10/10/2014 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    Теперь давай сюда grep -ri unsafe по дереву исходников Результат скормить wc ... весь текст скрыт [показать]
     
     
  • 6.35, Аноним, 23:13, 10/10/2014 [^] [ответить] [смотреть все]     [к модератору]  
  • +1 +/
    А ты давай-ка посмотри какого размера блоки unsafe Большинство однострочные, оч... весь текст скрыт [показать]
     
  • 3.18, Аноним, 14:38, 10/10/2014 [^] [ответить] [смотреть все]    [к модератору]  
  • +1 +/
    coreutils под лицензией mit? вот извращенцы
     
     
  • 4.23, Аноним, 16:51, 10/10/2014 [^] [ответить] [смотреть все]    [к модератору]  
  • +1 +/
    Чем это хуже coreutils под лицензией BSD?
     
  • 3.60, nich, 03:13, 15/10/2014 [^] [ответить] [смотреть все]    [к модератору]  
  • +/
    Что-то мне кажется, что это какая-то несерьёзная реализация coreutils.
     
  • 1.3, yantux, 10:55, 10/10/2014 [ответить] [смотреть все]     [к модератору]  
  • –17 +/
    Если речь идёт об управлении памятью, то чем это лучше java Что такое сопрограм... весь текст скрыт [показать]
     
     
  • 2.5, Аноним, 11:22, 10/10/2014 [^] [ответить] [смотреть все] [показать ветку]    [к модератору]  
  • +12 +/
    Оно более менее нормально компилируется в native приложение и не тянет за собой JRE. И оно более функционально даже чем Java 8. Хотя слово лучше/хуже это всегда холивар :)
     
  • 2.8, cbs, 11:41, 10/10/2014 [^] [ответить] [смотреть все] [показать ветку]     [к модератору]  
  • +2 +/
    Дык ведь что значит лучше Насколько понимаю, задачи у этих языков слишком... весь текст скрыт [показать] [показать ветку]
     
  • 2.9, beam, 11:57, 10/10/2014 [^] [ответить] [смотреть все] [показать ветку]     [к модератору]  
  • +1 +/
    Результат, касательно управления памятью, думаю, один и тот же, а вот цена за не... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.16, Аноним, 14:08, 10/10/2014 [^] [ответить] [смотреть все]     [к модератору]  
  • +1 +/
    Хочешь сказать, что в Rust эти затраты стремятся к бесконечности ... весь текст скрыт [показать]
     
  • 2.10, anonymus, 11:57, 10/10/2014 [^] [ответить] [смотреть все] [показать ветку]     [к модератору]  
  • +5 +/
    Ну зачем же так открыто признаваться в своём невежестве Почитайте Кнута, что ли... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.40, Минона, 08:36, 11/10/2014 [^] [ответить] [смотреть все]    [к модератору]  
  • +/
    Причем тут невежество?
    Это системная проблема современного образования.
     
     
  • 4.49, Crazy Alex, 17:46, 12/10/2014 [^] [ответить] [смотреть все]     [к модератору]  
  • +1 +/
    Это системная проблема современной нехватки IT-специалистов и локальная проблема... весь текст скрыт [показать]
     
  • 2.12, Аноним, 12:01, 10/10/2014 [^] [ответить] [смотреть все] [показать ветку]    [к модератору]  
  • +1 +/
    Вот дурачок. Сборщику мусора java до модели памяти Rust как до луны пешком.
     
     
  • 3.15, Led, 13:28, 10/10/2014 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    Ты, наверное, даже не догадываешься, как ты прав Круче него только ваня-однобит... весь текст скрыт [показать]
     
     
  • 4.20, Аноним, 16:00, 10/10/2014 [^] [ответить] [смотреть все]    [к модератору]  
  • +/
    Кстати да, ни разу не видел вот этого здесь.
     
  • 2.33, Ordu, 22:54, 10/10/2014 [^] [ответить] [смотреть все] [показать ветку]     [к модератору]  
  • +1 +/
    Вы ждёте что вам здесь лекцию о Rust прочитают Сходите лучше на сайт Rust и пос... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.61, nich, 03:46, 15/10/2014 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    В rust-е есть и Rc T и Gc T ... весь текст скрыт [показать]
     
  • 2.62, arisu, 03:49, 15/10/2014 [^] [ответить] [смотреть все] [показать ветку]     [к модератору]  
  • +1 +/
    а-а-а как же я не заметил это чудо вот и подросло поколение лоботомированых д... весь текст скрыт [показать] [показать ветку]
     
  • 2.64, rewlad, 12:48, 15/10/2014 [^] [ответить] [смотреть все] [показать ветку]     [к модератору]  
  • +/
    Если речь идёт об управлении памятью, то это лучше чем в java тем, что не нужен... весь текст скрыт [показать] [показать ветку]
     
  • 1.4, beerseller, 10:57, 10/10/2014 [ответить] [смотреть все]    [к модератору]  
  • +/
    А поддержка динамически подключаемых библиотек там намечается?
     
     
  • 2.6, Аноним, 11:33, 10/10/2014 [^] [ответить] [смотреть все] [показать ветку]    [к модератору]  
  • +3 +/
    Хотеть криптолибы на Rust.
     
  • 2.7, Аноним, 11:38, 10/10/2014 [^] [ответить] [смотреть все] [показать ветку]    [к модератору]  
  • –3 +/
    Зачем нам безопасность, нам надо чтобы все само подгружалось!
     
     
  • 3.14, beerseller, 12:35, 10/10/2014 [^] [ответить] [смотреть все]     [к модератору]  
  • –1 +/
    Почему само Я имею ввиду, чтобы можно было выносить разные возможности в отдель... весь текст скрыт [показать]
     
     
  • 4.21, Аноним, 16:00, 10/10/2014 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    Ого Может быть, и задачу останова вы уже решили Или вы имеете в виду версию ... весь текст скрыт [показать]
     
  • 1.11, Аноним, 11:57, 10/10/2014 [ответить] [смотреть все]     [к модератору]  
  • +/
    Практически доведена до готовности реализация типов с динамически изменяемым ра... весь текст скрыт [показать]
     
     
  • 2.13, Аноним, 12:11, 10/10/2014 [^] [ответить] [смотреть все] [показать ветку]    [к модератору]  
  • +/
    Поддерживались.
     
  • 1.22, Аноним, 16:22, 10/10/2014 [ответить] [смотреть все]     [к модератору]  
  • +2 +/
    Да ну и что, даже аппаратная реализация многопоточности тут не нужна ... весь текст скрыт [показать]
     
     
  • 2.26, Аноним Аналитег, 18:10, 10/10/2014 [^] [ответить] [смотреть все] [показать ветку]    [к модератору]  
  • +/
    >> аппаратная реализация многопоточности

    а что это такое?

     
     
  • 3.29, Аноним, 20:45, 10/10/2014 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    Это то, благодаря чему реализован механизм переключения между процессора путем и... весь текст скрыт [показать]
     
     
  • 4.30, Аноним, 20:47, 10/10/2014 [^] [ответить] [смотреть все]    [к модератору]  
  • +/
    процессами*
     
  • 4.31, Аноним, 21:17, 10/10/2014 [^] [ответить] [смотреть все]     [к модератору]  
  • +1 +/
    Речь не о процессах и даже не о нитях, это реализовано целиком в пространстве по... весь текст скрыт [показать]
     
     
  • 5.34, Аноним, 22:55, 10/10/2014 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    Я это знаю, но тут утверждается, что всё это целиком и полностью реализовано в R... весь текст скрыт [показать]
     
     
  • 6.41, Бывший школьник, 10:19, 11/10/2014 [^] [ответить] [смотреть все]    [к модератору]  
  • +/
    Green threads же
     
  • 5.36, Аноним, 23:30, 10/10/2014 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    то есть один процесс-нить сможет изменить глобальную переменную, в другой процес... весь текст скрыт [показать]
     
  • 4.37, Аноним Аналитег, 00:51, 11/10/2014 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    т е прерывания вы называете аппаратной реализацией многопоточности ... весь текст скрыт [показать]
     
     
  • 5.43, Аноним, 15:37, 11/10/2014 [^] [ответить] [смотреть все]     [к модератору]  
  • +1 +/
    Вы хотите предложить какую-либо альтернативную реализацию многопоточности, котор... весь текст скрыт [показать]
     
     
  • 6.44, ffirefox, 17:36, 11/10/2014 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    Так уже давно предлагали В виндах 3 x это был основной метод организации многоз... весь текст скрыт [показать]
     
     
  • 7.45, Аноним, 18:37, 11/10/2014 [^] [ответить] [смотреть все]    [к модератору]  
  • +/
    Чягоо ?
     
     
  • 8.46, Аноним Аналитег, 22:20, 11/10/2014 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    хе-хе имеется ввиду кооперативная многозадачность, в терминологии ветки обсужд... весь текст скрыт [показать]
     
  • 1.24, sorrymak, 17:32, 10/10/2014 [ответить] [смотреть все]    [к модератору]  
  • +/
    А что с GCCRS (Rust для GCC)? Готово для использования?
     
     
  • 2.28, Аноним, 18:32, 10/10/2014 [^] [ответить] [смотреть все] [показать ветку]     [к модератору]  
  • +/
    Едва ли Впервые о нём слышу, хотя языком интересуюсь После 1 0 можно будет гов... весь текст скрыт [показать] [показать ветку]
     
  • 1.38, Kodir, 01:33, 11/10/2014 [ответить] [смотреть все]    [к модератору]  
  • +/
    Зачем надо было пилить Ржавого, когда до этого уже несколько лет существовал Ди? Если бы у мозилофилов было чуть меньше амбиций и чуть больше мозгов, они бы помогли Ди с библиотеками и язык популяризовался гораздо быстрее.
     
     
  • 2.39, inferrna, 07:12, 11/10/2014 [^] [ответить] [смотреть все] [показать ветку]    [к модератору]  
  • –4 +/
    Им захотелось немного хаскелльщины, а ди, это скорее питонщина.
     
     
  • 3.42, Аноним, 14:28, 11/10/2014 [^] [ответить] [смотреть все]    [к модератору]  
  • +/
    Ты коммиты смотрел у Руста? там Рубистов и ЯваСкриптоПисателей гора.
     
     
  • 4.47, Kodir, 04:12, 12/10/2014 [^] [ответить] [смотреть все]     [к модератору]  
  • –1 +/
    Это-то и пугает У статического языка должны быть статические же реализаторы ... весь текст скрыт [показать]
     
  • 3.50, Crazy Alex, 17:57, 12/10/2014 [^] [ответить] [смотреть все]     [к модератору]  
  • +1 +/
    Ди это что угодно, но не питонщина По многим причинам, начиная прежде всего с л... весь текст скрыт [показать]
     
     
  • 4.57, kuku, 00:20, 14/10/2014 [^] [ответить] [смотреть все]    [к модератору]  
  • +/
    http://doc.rust-lang.org/0.12.0/guide-macros.html

     
     
  • 5.63, nich, 07:53, 15/10/2014 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    А можно на макрах исключения забацать ... весь текст скрыт [показать]
     
  • 2.48, й, 16:24, 12/10/2014 [^] [ответить] [смотреть все] [показать ветку]     [к модератору]  
  • –1 +/
    покажите мне green threads в этом переусложнённом монстре ... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.51, Crazy Alex, 18:14, 12/10/2014 [^] [ответить] [смотреть все]    [к модератору]  
  • +1 +/
    А зачем они там? Есть Fibers, есть Tasks, есть libasync. А делать свой менеджер потоков в языке - это ни разу не в стиле D. Вот это как раз было бы переусложнением.
     
     
  • 4.53, й, 19:49, 12/10/2014 [^] [ответить] [смотреть все]    [к модератору]  
  • –1 +/
    Это всё и в Ruby есть. Green threads таки круче.

    Речь не о "менеджере потоков", речь о том, что параллельный софт удобнее разрабатывать на ерланговских green threads, чем на всех этих велосипедах из твоего сообщения. Разработчики Rust это поняли, D -- нет, об чём и речь.

     
  • 4.54, й, 19:55, 12/10/2014 [^] [ответить] [смотреть все]    [к модератору]  
  • –1 +/
    О. Ещё бонусный вопрос, раз уж вы отрицаете переусложнённость D. Цель: написать UTF-8 в консоль (мы же в 21 веке знаем и про локали, и про юникод, и про винду). В Go это просто как 'Println("что надо"). Приведите не более сложный код на D, если он и правда не переусложнён.
     
  • 2.52, Crazy Alex, 18:14, 12/10/2014 [^] [ответить] [смотреть все] [показать ветку]    [к модератору]  
  • +/
    > Зачем надо было пилить Ржавого, когда до этого уже несколько лет существовал
    > Ди? Если бы у мозилофилов было чуть меньше амбиций и чуть
    > больше мозгов, они бы помогли Ди с библиотеками и язык популяризовался
    > гораздо быстрее.

    У мозилловцев NIH рекордных размеров. От pdf.js до Daala.

     
     
  • 3.56, arisu, 21:24, 13/10/2014 [^] [ответить] [смотреть все]    [к модератору]  
  • +/
    э… а ничего, что Daala — это рыбка?
     
  • 2.58, Artemciy, 02:18, 14/10/2014 [^] [ответить] [смотреть все] [показать ветку]    [к модератору]  
  • +/
    В D нету borrow checker-а, обеспечивающего Rust дополнительную безопасность. К тому же стандартные библиотеки D больше заточены под сборку мусора и нет разграничения памяти между задачами.
     
     
  • 3.59, arisu, 02:42, 14/10/2014 [^] [ответить] [смотреть все]    [к модератору]  
  • +/
    > В D нету borrow checker-а, обеспечивающего Rust дополнительную безопасность.

    об этом думают, есть даже DIP.

    > К тому же стандартные библиотеки D больше заточены под сборку мусора

    об этом тоже очень сильно думают, в git-е достаточно много подвижек в сторону @nogc-кода. также Александреску выкатил предварительный вариант refcounted строк, и идут обсуждения про то, как и рыбку, и ёлку: и mark/sweep GC иметь, и при необходимости rc GC. пока что ругаются.

    > и нет разграничения памяти между задачами.

    э? если ты про фиберы (то бишь, сопрограммы) — то да, нет. это, в общем-то, by design, а не flaw. хотя возможно, что из DIP про scoped values такое разграничение получится само собой.

    пока что с escape analysis всё не очень весело, потому так.

     
     
  • 4.65, Artemciy, 22:42, 17/10/2014 [^] [ответить] [смотреть все]    [к модератору]  
  • +/
    > > и нет разграничения памяти между задачами.
    > э? если ты про фиберы (то бишь, сопрограммы) — то да, нет.
    > это, в общем-то, by design, а не flaw. хотя возможно, что из DIP про scoped values
    > такое разграничение получится само собой.
    > пока что с escape analysis всё не очень весело, потому так.

    В Rust это называется task (задача), и она даже не фиберная а обычный поток пока что. Но зато сборщик мусора, когда он появится, будет собирать мусор отдельно в каждой задаче, а не во всем процессе. По моему опыту это охуенно важно.

    Речь не о том, flaw это или не flaw, а о том что дизайн языков довольно разный, поэтому мем о том что Мозилле надо было использовать D, вместо выдумывания нового языка Rust - не совсем верный.

     
     
  • 5.66, arisu, 23:30, 17/10/2014 [^] [ответить] [смотреть все]    [к модератору]  
  • +/
    > Речь не о том, flaw это или не flaw, а о том
    > что дизайн языков довольно разный, поэтому мем о том что Мозилле
    > надо было использовать D, вместо выдумывания нового языка Rust - не
    > совсем верный.

    а, в этом смысле. тут не спорю. впрочем, я до сих пор не уверен, что сами авторы rust в курсе, что хотят получить на выходе и как это должно выглядеть. но не уверен, что это такой уж огромный недостаток: общая идея у них есть, а что они по дороге насочиняют… может, оно и лучше получится, чем если бы изначально план на скрижалях имелся.

     
  • 5.67, arisu, 23:37, 17/10/2014 [^] [ответить] [смотреть все]    [к модератору]  
  • +/
    p.s. с другой стороны, обмениваться данными между задачами придётся или явно указывая на смену владельца, или надеяться, что компилятор сможет сам это разрулить (тоже не лучший вариант, на самом деле), или жёстко message passing (это, собственно, подвид первого варианта). то есть, создать экземпляр какой-то фигни и расшарить её с другим потоком будет уже не просто присваиванием.

    поэтому, например, в D и не внедряют task-local heaps: не очень ясно, как это разруливать так, чтобы и безопасно было, и не надо было ручной код делать, и при этом не потерялась возможность «низкоуровневости».

     
     
  • 6.68, Artemciy, 23:25, 18/10/2014 [^] [ответить] [смотреть все]    [к модератору]  
  • +/
    > p.s. с другой стороны, обмениваться данными между задачами придётся или явно указывая
    > на смену владельца

    В Rust "=" - это move, кстати.
    Для копирования надо явно указывать clone.

     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:


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