Rust: str vs String

оригинал: Ameya • перевод: Norman Ritchie • обучение • поддержите на Patreon

Будучи новичком в Rust, я запутывался в различных способах представления строк. В книге о языке Rust есть глава «References and Borrowing», в которой используется три различных типа строковых переменных в примерах: String, &String и &str.

Начнём с разницы между str и String: String — это расширяемая, выделяемая на куче структура данных, тогда как str — это неизменяемая строка фиксированной длины, где-то в памяти.

Выпуск Rust 1.21

оригинал: The Rust Core Team • перевод: ozkriff • новости • поддержите на Patreon

Команда Rust рада представить выпуск Rust 1.21.0. Rust — это системный язык программирования, нацеленный на скорость, безопасность и параллельное выполнение кода.

Если у вас установлена предыдущая версия Rust, для обновления достаточно выполнить:

1
$ rustup update stable

Если же у вас ещё не установлен rustup, вы можете установить его с соответствующей страницы нашего веб-сайта. С подробными примечаниями к выпуску Rust 1.21.0 можно ознакомиться на GitHub.

Что вошло в стабильную версию 1.21.0

Этот выпуск содержит несколько небольших, но полезных изменений языка и новую документацию.

Первое изменение касается литералов. Рассмотрим код:

1
let x = &5;

В Rust он аналогичен следующему:

1
2
let _x = 5;
let x = &_x;

То есть 5 будет положено в стек или возможно в регистры, а x будет ссылкой на него.

Однако, учитывая, что речь идёт о целочисленном литерале, нет причин делать значение таким локальным. Представьте, что у нас есть функция, принимающая 'static аргумент вроде std::thread::spawn. Тогда вы бы могли использовать x так:

1
2
3
4
5
6
7
8
9
use std::thread;

fn main() {
    let x = &5;

    thread::spawn(move || {
        println!("{}", x);
    });
}

Выпуск Rust 1.20

оригинал: The Rust Core Team • перевод: red75prime и Илья Богданов • новости • поддержите на Patreon

Команда Rust рада представить выпуск Rust 1.20. Rust — это системный язык программирования, нацеленный на скорость, безопасность и параллельное выполнение кода.

Если у вас установлена предыдущая версия Rust, для обновления достаточно выполнить:

1
$ rustup update stable

Если же Rust ещё не установлен, вы можете установить rustup с соответствующей страницы нашего веб-сайта и ознакомится с подробными примечаниями к выпуску Rust 1.20 на GitHub.

Что вошло в стабильную версию 1.20

В предыдущих версия Rust вы могли определять типажи, структуры и перечисления, имеющие «ассоциированные функции»:

1
2
3
4
5
6
7
8
9
10
11
struct Struct;

impl Struct {
    fn foo() {
        println!("foo - это ассоциированная функция для Struct");
    }
}

fn main() {
    Struct::foo();
}

Мы называем их «ассоциированными функциями», потому что эти функции связаны непосредственно с самим типом, а не с каким-то определённым экземпляром.

В Rust 1.20 была добавлена возможность определять «ассоциированные константы»:

1
2
3
4
5
6
7
8
9
struct Struct;

impl Struct {
    const ID: u32 = 0;
}

fn main() {
    println!("the ID of Struct is: {}", Struct::ID);
}

Таким образом, константа ID ассоциирована с Struct. Подобно функциям, ассоциированные константы работают и с типажами, и с перечислениями.

Game development in Rust, 14 сентября, Санкт-Петербург

• Логачев Федор • новости • поддержите на Patreon

14 сентября в Санкт-Петербурге состоится первая в истории встреча посвящённая разработке игр на Rust.

alt "Ferris"

Будут представлены доклады:

  • SHAR — 3d action на Rust, Фёдор Логачев

Обзор внутренностей и организации достаточно большой игры на Rust.

  • Three-rs — взгляд изнутри, Илья Богданов

Рассмотрим архитектурные решения и библиотеки, используемые при создании одного из самых молодых и активно развивающихся игровых движков на Rust.

  • Ржавые пошаговые игры, Андрей Лесников

Андрей расскажет о своём опыте хобби-разработки игры Zone of Control, немного о связанном с этим инструментарии и о своём новом проекте.

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

Мероприятие состоится 14-го сентября (четверг) в 19-00 в петербургском офисе JetBrains.

Для участия во встрече необходима регистрация на meetup

Как настроить сборку и тестирование для Open Source проекта на Rust под Windows с помощью AppVeyor

• Михаил Панков • обучение • поддержите на Patreon

teaser

Как зарегистрироваться на AppVeyor, подключить туда свой проект на Rust и сделать первую сборку.

Это цикл статей: