В продолжение
темыАвтор: Shmj
Дата: 12.09.23
:
Немножко было времени на выходных и по вечерам — почитал учебник Rust. И придумал для таких же как я простой и наглядный пример, который демонстрирует суть владения — зачем оно вообще нужно и в чем смысл. Вот пример:
#include <iostream>
struct Class1 { const int i1 = 42; };
void fun1(std::unique_ptr<Class1> smart_ptr){}
int main()
{
auto smart_ptr1 = std::make_unique<Class1>();
fun1(std::move(smart_ptr1));
std::cout << smart_ptr1->i1 << std::endl;
}
Компилятор С++ это принимает и не пикнет — максимум варнинг выдаст, и то не всегда. А ведь это 100% ошибка без вариантов. А в Rust право владения — суть концепция самого языка.
Почему я начал почитывать Rust? Один чел. сказал что разобравшись с Rust — лучше начинаешь понимать другие языки, в частности тот же C++. Ведь в С++ умные указатели ведь тоже завязаны на владение, однако нет парадигмы в самом языке, которая способна выявлять подобные ошибки.
По сути Rust — это просто более строгий язык, который ошибки заменит на этапе компиляции. Примерно как если сравнить C++ и Python — так можно сравнить Rust и C++ — первый более строгий, второй менее.