Системное программирование
От C до Rust
Ключевые концепции и примеры кода для разработчиков C
Rust — это современный язык программирования, который в последнее время приобрел популярность благодаря своей безопасности, производительности и выразительному синтаксису. По сравнению с C, более традиционным языком, Rust имеет некоторые ключевые отличия в синтаксисе и концепциях. В этой статье мы рассмотрим основы синтаксиса Rust и сравним его с C в отношении определений функций, переменных и типов.
Эта статья предназначена для программистов на C, которые заинтересованы в изучении Rust и хотят понять сходства и различия между двумя языками. Прочитав эту статью, вы сможете написать простую программу на Rust, но, возможно, вы все еще будете думать на C, что может привести к тому, что код на Rust будет не таким элегантным, как мог бы быть.
Тем не менее, это хорошая отправная точка для изучения Rust, а в последующих статьях будут рассмотрены более сложные темы, такие как владение, заимствование и обработка ошибок в Rust. А пока наслаждайтесь этим простым сравнением синтаксиса C и Rust.
Функции
Функции с аргументами
Вот пример простой функции Rust, которая принимает два целых числа в качестве аргументов и возвращает их сумму:
fn sum(a: i32, b: i32) -> i32 { return a + b; }
В C эквивалентная функция будет выглядеть так:
int sum(int a, int b) { return a + b; }
Функция без аргументов
Пример функции Rust без аргумента:
fn main() { println!("Hello, world!"); }
Как видно без аргументов, мы просто удаляем «-> i32» в конце объявления функции.
Это эквивалентно C:
#include <stdio.h> void main() { printf("Hello, world!\n"); }
Переменные
Местный
Вот пример программы на Rust, которая объявляет переменную типа i32 и инициализирует ее значением 42:
fn main() { let a: i32 = 42; println!("a = {}", a); }
В C эквивалентная программа будет выглядеть так:
#include <stdio.h> int main() { int a = 42; printf("a = %d\n", a); return 0; }
Глобальный
В Rust обычно избегают глобальных переменных, потому что система владения и заимствования Rust затрудняет безопасное и эффективное управление глобальным состоянием. Однако в Rust есть возможность объявлять глобальные переменные с помощью ключевого слова static
. Вот пример:
static mut GLOBAL_VAR: i32 = 0; fn main() { unsafe { GLOBAL_VAR += 1; println!("{}", GLOBAL_VAR); } }
В этом примере ключевое слово static
используется для объявления глобальной переменной GLOBAL_VAR
, которая инициализируется значением 0. Ключевое слово mut
указывает, что переменная является изменяемой, что означает, что ее можно изменить во время выполнения. Блок unsafe
используется для доступа и изменения переменной, поскольку изменение глобальной переменной из нескольких потоков может привести к гонкам данных и другому неопределенному поведению.
В C эквивалентный код:
#include <stdio.h> int main() { global_var++; printf("global_var = %d\n", global_var); return 0; }
Петли
Для цикла
Вот пример цикла Rust for, который перебирает диапазон значений:
fn main() { for i in 1..=10 { println!("{}", i); } }
В C эквивалент цикла for будет выглядеть так:
#include <stdio.h> int main() { for (int i = 1; i <= 10; i++) { printf("%d\n", i); } return 0; }
Пока цикл
Простой цикл while в Rust
let mut i = 0; while i < 10 { println!("i = {}", i); i += 1; }
Эквивалент в C:
int i = 0; while (i < 10) { printf("i = %d\n", i); i++; }
Цикл Do-While
Простой цикл do-while в Rust:
let mut i = 0; loop { println!("i = {}", i); i += 1; if i >= 10 { break; } }
Его эквивалент в C:
int j = 0; do { printf("j = %d\n", j); j++; } while (j < 10);
Заключение
В заключение, Rust — это современный и мощный язык программирования, который приобрел большую популярность в последние годы. Для программистов C, заинтересованных в изучении Rust, понимание сходств и различий между синтаксисом C и Rust имеет решающее значение для написания эффективного и действенного кода Rust. Мы рассмотрели некоторые основные концепции Rust, такие как определения функций, переменные и типы, и предоставили сравнения с аналогичными концепциями в C. Если вы нашли эту статью полезной, пожалуйста, хлопните в ладоши и следите за другими подобными материалами.
Повышение уровня кодирования
Спасибо, что являетесь частью нашего сообщества! Перед тем, как ты уйдешь:
- 👏 Хлопайте за историю и подписывайтесь на автора 👉
- 📰 Смотрите больше контента в публикации Level Up Coding
- 💰 Бесплатный курс собеседования по программированию ⇒ Просмотреть курс
- 🔔 Подписывайтесь на нас: Twitter | ЛинкедИн | "Новостная рассылка"
🚀👉 Присоединяйтесь к коллективу талантов Level Up и найдите прекрасную работу