01.01.2004
Новости Софтком
Софтком на выставке высоких технологий
26 апреля 2023 г. в Москве генеральный директор компании «ЛАНИТ-ТЕРКОМ» Вадим Сабашный выступит на ежегодном мероприятии издания «Ведомости», посвященном поиску новых точек роста бизнеса телеком-операторов.

Форум «Телеком: трансформация бизнес-моделей и поиск новых решений» – площадка для обсуждений, центральной темой которых станет развитие отрасли в новой реальности. В рамках дискуссионной сессии «Про оборудование и ПО: взгляд в будущее», на которой выступит Вадим Сабашный, эксперты обсудят вопросы технологической реорганизации отрасли, поддержку существующей инфраструктуры и обоснованность затрат, необходимых для развития бизнеса.

В этот раз организаторы пригласили к участию не только телеком-операторов, но и других ведущих игроков ИТ-рынка, экспертов и аналитиков. Это позволит участникам обменяться опытом из смежных отраслей и открыть для себя новые пути развития.
// Публичная функция, получающая два integer и возвращающая их удвоенную сумму
pub fn add_and_double(x: i32, y: i32) -> i32 {
    2 * _add(x, y)
}

// Приватная вспомогательная функция, складывающая два integer
fn _add(x: i32, y: i32) -> i32 {
    x + y
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn test_add_and_double() {
        assert_eq!(add_and_double(2, 3), 10);
        assert_eq!(add_and_double(0, 0), 0);
    }

    #[test]
    fn test_add() {
        assert_eq!(_add(2, 3), 5);
        assert_eq!(_add(0, 0), 0);
    }
}
Позаимствовал и теперь не отдаёт

Для меня самой сложной частью изучения Rust стало понимание концепции владения (ownership), времени жизни (lifetime), заимствования (borrowing), перемещения (moving) и копирования (copying).

Rust — это язык, проектируемый как безопасный с точки зрения доступа к памяти по своей сути. Источником вдохновения для создания Rust стал сбой в операционной системе лифта в жилом здании. Сбои часто вызывают ошибки в памяти, в том числе нулевые указатели, висячие указатели и утечки памяти, которых можно избегать, создавая более качественные программы. Система владения Rust гарантирует отсутствие подобных ошибок.

Значение в памяти имеет лишь одного владельца. Владелец — это только переменная, содержащая значение, и компилятор может во время компиляции понять, когда владелец вышел за границы блока (scope), и точно знает, когда можно освободить память. Весь другой блок, которому нужно использовать значение, должен заимствовать его, и за один раз значение заимствовать может только один блок. Это гарантирует, что одновременно не может быть больше одной ссылки на значение. Также в языке есть строгая система управления временем жизни, поэтому ссылка на значение не может жить дольше, чем переменная, владеющая значением. Эти концепции являются фундаментом безопасности доступа к памяти Rust.

Если вы пишете код логичным и удобным образом, ваши функции должны быть короткими, а переменные не должны жить слишком долго. Но у любой полезной программы есть необходимость хранить данные намного дольше, чем один вызов функции. На сцене появляется перемещение (moving).

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