Опубликован релиз языка системного программирования Rust 1.49, основанного проектом Mozilla. Язык сфокусирован на безопасной работе с памятью, обеспечивает автоматическое управление памятью и предоставляет средства для достижения высокого параллелизма выполнения заданий, при этом обходясь без использования сборщика мусора и runtime (runtime сводится к базовой инициализации и сопровождению стандартной библиотеки)...Подробнее: https://www.opennet.dev/opennews/art.shtml?num=54345
Фракталу подарок на НГ.
божественный язык
s/божественный язык/очередное бесполезное и бездарное поделие васянов/Не благодари за правки, я так знаю что шикарен
Годы идут, а вбросы школьников все унылее.
Просто старые школьники уже выросли, на смену им пришли малолетние растохейтеры.
Ну сколько раз повторять - божественный язык, это Лисп. Он был божественным еще 50 лет назад и с тех пор все еще остается божественным.А вы выберите себе любой другой эпитет.
А можно мне какой-нибудь "лисп 2.0"? А то эта его божественная древность из всех щелей просвечивает.
Текстовое представление байткода webassembly оч похоже.
К сожалению интрументально лисп застрял в 80х. Ранний успех умалил стремление становиться лучше.
Вы решили скопипастить слова из соседней ветки?А если серьезно, то после всех этих ваших Java, PHP, Delphi, C#, C++, ... хочется действительно сказать, что Rust это действительно то на чем хочется писать.
Так почему ты на Расте ничего не пишешь?
Пишу, кто сказал что я не пишу? Вы?
Ваш разговор так мил. Напоминает, общение врача с пациентом.А я не пишу на Расте. А ха-ха-ха-ха!
Показывай что за хеллоу ворлды ты на нем написал.
Потому что тогда расхочется, и нечем будет трясти в комментариях
c# / java отличные языки, что с ними не так?
А я тут недавно на такую штуку наткнулся: https://www.roi.ru/71821/
Интересно, не Фракталушка ли запилил?
На такое способны только русские.
1. Сколько на Расте весит hello world? 3 или 5 Мегабайт?2. Что дольше компилируется C++ или Раст? При условии, что размер исходного кода одинаков.
3. У типичного исходника на Расте, какая парадигма? Вроде ОПП там нет, вроде язык не функциональный, вроде чистый Си они считают примитивным, тогда стуктурная парадигма тоже отпадает.
C++ оверхед , а это поделие вообще в серьез нельзя воспринимать.
Юзай shell:
echo "hello word"
Раст это просто DSL чтобы написать на нем браузерный движок. Как все уже знают ничего из этого не вышло. Теперь пытаются придумать Расту хоть какое-то применение и не находят. Потому что он плохо подходит для всего.
Ребят, хватит тупо копипастить вопросы из соседней ветки.
Вы бы еще кроме вопросов копипастили бы еще и ОТВЕТЫ НА НИХ:)Rust давным давно не связан с мозиллой НИКАК, да и элементы написанные на Rust для Firefox давно (почти, но всеже) внедрены в сам браузер.
Вы бы интересовались что на расте ДРУГОЕ было написано и чем уже вы пользуетесь с использованием его.
> и чем уже вы пользуетесьв моём FF ни строчки на расте. Удивительно, да?!
> на расте ДРУГОЕ
Ну расскажи, если сможешь.
ТАк давай, любить КАПСА, по порядку.Раст не связан с Мозиллой только потому что он никому НЕ НУЖЕН.
Движок Servo для которого создавался Раст НЕ ВКЛЮЧЕН в в состав FF.
Если бы на Раст и было написано хотя бы одно полезное приложение, то ты бы его уже упоминал, но ни одного такого приложения НЕТ.
Alacritty ежедневно пользуюсь
Хорошая попытка, но нет.
> Хорошая попытка, но нет.мне перестать пользоваться?
Ну, если ты никто и он тебе не нужен, то твое утверждение с натяжкой можно назвать верным, в ином случае не нужен тебе != не нужен никому.
rg на расте, например. Вроде как в 3 раза быстрее гнутого грепа.
> 1. Сколько на Расте весит hello world? 3 или 5 Мегабайт?6-7KB без каких либо "ухищрений".
ЗЫ
На опеннете все как всегда:
"Криворук и вантузо-ламероват? Это раст все виноват!!"
Сознавайся стрипп нг делал, шалунишка?
+ растовые либы на те же 5мб или сколько там.
> + растовые либы на те же 5мб или сколько там.https://packages.debian.org/de/jessie/libc6
> amd64 4.555,7 kB 10.229,0 kB"Это другое!"(с)?
Да, до людей не доходит что LIBC у них лежит отдельно на диске.
А std из Rust лежит у них внутри бинаря...Собирайте уже наконец си проги со статической линковкой libc:)
libc везде есть, в отличие от. Если я например для андроид приложения делаю конвертертацию картинки uvc -> rgb на Си, этот код будет занимать примерно нисколько, а для хруста надо будет доп либки совать.
> libc везде есть, в отличие от.Ну т.е. "это другое! Понимать надо!"
Си == Unix-like. Rust == Redox. Rust != Unix-like. Rust != POSIX.Что потеряли растаманы на Юниксовом форуме? Раст для Линукса является чужеродным образованием.
Юниксовый форум? Вы про ЛОР или про опеннет? Вроде опеннет про открытие вещи в интернетах ВСЯКИХ, не?И почему Rust для линукса это чужеродное? Если Rust прозрачно работает хоть и без std, даже можно тупо отлинковать std, подрубить ваш libc и работать с ним через unsafe.
> Си == Unix-like. Rust == Redox. Rust != Unix-like. Rust != POSIX.Ну раз аноним авторитетно заявляет, то наверное так оно и есть!
> Что потеряли растаманы на Юниксовом форуме? Раст для Линукса является чужеродным образованием.
Все может быть. Но я не понял, зачем было упоминать "unix-like" и POSIX вместе с "Линукс"
"ignore everything it says about POSIX compatibility and hack away your amazing Linux software" (c) Главный Разработчик Линуксэкосистемы
>Ну раз аноним авторитетно заявляет, то наверное так оно и естьКогда нет контраргументов ты начинаешь хамить.
>Все может быть. Но я не понял, зачем было упоминать "unix-like" и POSIX вместе с "Линукс"
>"ignore everything it says about POSIX compatibility and hack away your amazing Linux software" (c)Вот только включать дурака не надо. Когда Линус начинал писать свое ядро он ориентировался на стандарт POSIX. Линус много чего говорил, но вырванные тобой из контекста фразы неубедительны.
>Главный Разработчик Линуксэкосистемы
GNU/Linux экосистемы.
>>Ну раз аноним авторитетно заявляет, то наверное так оно и есть
> Когда нет контраргументов ты начинаешь хамить.Высказывать сомнения в целой куче _голословных_ (контр-аргумент, о ревнитель анонимной чести и любитель замечать соринки в чужих глазах, предполагает наличие за-аргументов) утверждений от анонима, намекая на "неплохо бы пруфцы кинуть" - хамство? От оно че.
> Вот только включать дурака не надо. Когда Линус начинал писать свое ядро
> он ориентировался на стандарт POSIX.Что там было 30 лет назад, никак не изменяет того, что есть _по факту_ последние 10 лет.
> Линус много чего говорил, но вырванные тобой из контекста фразы неубедительны.
А значит "не стчитаица", ага. Правда на факты это никак не влияет - на POSIX Леннарт со товарищи исправно и давно кладет большой и толстый.
Иронична отссылка на "вне контекста" - потому что высказал это совсем не Линус и смысл высказывания как раз вполне сохранен.>>Главный Разработчик Линуксэкосистемы
> GNU/Linux экосистемы.Мог бы и вбить цитату в поисковик, узнал бы, что это высказывание пренадлежит Леннарту - но нет, как истинный аноним, полез "исправлять" меня и "защищать" Торвальдса.
"И вот так у вас - все!"(с)
>Что там было 30 лет назад, никак не изменяет того, что есть _по факту_ последние 10 лет.
>А значит "не стчитаица", ага. Правда на факты это никак не влияет - на POSIX Леннарт со товарищи исправно и давно кладет большой и толстый.
>Иронична отссылка на "вне контекста" - потому что высказал это совсем не Линус и смысл высказывания как раз вполне сохранен.Ты о чем, наверно ты не о чем. Ты же обычный пустозвон. Так и запишем растаманы против POSIX.
>Мог бы и вбить цитату в поисковик, узнал бы, что это высказывание пренадлежит Леннарту - но нет, как истинный аноним, полез "исправлять" меня и "защищать" Торвальдса.
А зачем тратить свое личное время, пытаясь проверить истинность утверждения другого человека. Достаточно того, что по-умолчанию мы будем считать своих опонентов порядочными людьми. И совершенно закономерно под словами "главный разработчик" принять либо Линуса, либо Столлмана. Я же Линуксоид. Мне кажется тебе почудилось то, что я защищаю Торвальдса. Торвальдс не нуждается в защите. Я защищаю идеалы FSF, GNU, Unix-like.
Даю тебе второй шанс. Если ты не пустозвон опровергни утверждение о том, что
"Rust != POSIX, Rust != Unix-like".
на расте написать libc невозможно... на расте вообще вызовы ядра нельзя сделать.
> на расте написать libc невозможно... на расте вообще вызовы ядра нельзя сделать.Однако, какой мощный выброс метана!
https://docs.rs/syscall/0.2.1/src/syscall/platform/linux-x86...
#[inline(always)]
pub unsafe fn syscall0(n: usize) -> usize {
let ret : usize;
asm!("syscall" : "={rax}"(ret)
: "{rax}"(n)
: "rcx", "r11", "memory"
: "volatile");
ret
}
Я догадываюсь что сейчас налетят "ФУУУ, АССЕМБЛЕР!! ФУУУ", Нет) На расте и попроще можно.
> Я догадываюсь что сейчас налетят "ФУУУ, АССЕМБЛЕР!! ФУУУ", Нет) На расте и попроще можно.Тихо, прикармливаемых "Экспердов" спугнешь!
Так и где тут безопасность? И если её нет зачем нужен Раст?
> Так и где тут безопасность?Какая безопасность тебе нужна при прямом обращении к железу и как ты собрался обеспечивать гарантии в компиляторе, о великий Эксперд Безопасности Кода?
Кстати, как ловко ты спрыгнул с темы "на расте вообще вызовы ядра нельзя сделать."
> И если её нет зачем нужен Раст?
Т.е. в твоем авто принципиально нет АБС, ЭКУ, ремня и подушек безопасности, а в твоей входной двери - замка?
твоем авто принципиально нет АБС, ЭКУ, ремня и подушек безопасности
АБС - нет ОС, нет проца
ремня - а раст тут причем? Если за пиропатроны - то нет ОС, нет проца, нет компилируемого кода, нет
ПЗУ ( только факт срабатывания)
подушек безопасности - смотри выше.ЭКУ - то че? ЭБУД ( по госту), он же EMU? - ну да, код есть, но он написан не человеком )). И да, он работает под железным гипервизором на 200 баит прошивки, чуть не так - hardware reset. В такие вещи писюкатых погромиздов не пускают
>> твоем авто принципиально нет АБС, ЭКУ, ремня и подушек безопасности
> АБС - нет ОС, нет проца ремня - а раст тут причем? Если за пиропатроны - то нет
> ОС, нет проца, нет компилируемого кода, нет
> ПЗУ ( только факт срабатывания) подушек безопасности - смотри выше.И все это никак не поможет при въезде в стену, бетонный столб или фуру на 100km/h - а значит, по "логике" выше, "И где обещанная безопасность? А если ее нет, то значит нинужна!"
> ЭКУ - то че? ЭБУД ( по госту), он же EMU? -
> ну да, код есть, но он написан не человеком )). И
> да, он работает под железным гипервизором на 200 баит прошивки, чуть
> не так - hardware reset. В такие вещи писюкатых погромиздов не
> пускаютСам придумал, сам оспорил - настоящий опеннетовец! ))
На сишечке, кстати, сисколлы тоже не святым духом Кернигана Риччи делаются. Такой же ассемблер#define __asm_syscall(...) do { \
__asm__ __volatile__ ( "svc 0" \
: "=r"(r0) : __VA_ARGS__ : "memory"); \
return r0; \
} while (0)Обратите внимание на элегантный do{}while(0)
Если заморочиться, то байт 100.
> Если заморочиться, то байт 100.принт хеловорлд ? бабушке своей будешь втирать
1. Сколько на Расте весит hello world? 3 или 5 Мегабайт?
Зависит от статически слинкованого std + debug symbols + ...
А и даже по кодово классический println! это не просто вывод в C/C++, это потокобезопасный синхронизированный вывод.2. Что дольше компилируется C++ или Раст? При условии, что размер исходного кода одинаков.
Если без библиотек и всего, то C++.
Но если с библиотеками то Rust, так как rust делает компиляцию один раз:) А си нет.3. У типичного исходника на Расте, какая парадигма? Вроде ОПП там нет, вроде язык не функциональный, вроде чистый Си они считают примитивным, тогда стуктурная парадигма тоже отпадает.
Парадигма СВОЯ, ООП нет но все что есть в ООП легко делается и в Rust ДРУГИМИ примитивами дающими еще большие возможности.
И чистый си и rust?:) ХАха нуи сравнение....
>ООП нет но все что есть в ООП легко делается и в Rust ДРУГИМИ примитивами дающими еще большие возможности.Ха-ха! Твоя слабость заключается в том, что ты считаешь отсутствие ООП каким-то недостатком.
Разработчики Раст считают, что ООП это зло. И поэтому сознательно не сделали ООП.
> Ха-ха! Твоя слабость заключается в том, что ты считаешь отсутствие ООП каким-то недостатком.Мне вообще кажется, что не нужно использовать слово ООП в своей речи, потому что его часто понимают неправильно, и в связи с этим наделяют его негативным окрасом.
Если адепт ФП видит хороший код, он называет его функциональным.
И наоборот, если адепт ООП видит хороший код, то он говорит, что код написан в хорошем ООП стиле.То есть, любой код, который не производит разрыв туза (свой код), вы будете называть согласно своим предпочтениям.
Напротив же, плохой код можно назвать функциональной ccаниной или "ооп головного мозга", это примерно одно и то же
> 1. Сколько на Расте весит hello world? 3 или 5 Мегабайт?
$ echo 'fn main() { println!("Hello"); }' > hello.rs
$ rustc -O -C lto hello.rs
$ ls -lh hello
-rwxrwxr-x 1 xx xx 1,3M янв 2 17:54 helloИз-за статической линковки std бинарь жирный, но не 5 мегабайт. Кстати, крупная продакшн-система на Rust, над которой я сейчас работаю, весит 30 мегабайт, а там внутри http и grpc-сервер, встраиваемая БД, рантайм для асинхронщины и много чего еще. Программа на многие тысячи строк кода, даже без учета зависимостей, которых сотни, так что размер хелоуворда ни о чем не говорит.
Лютый пдц. Надеюсь хоть не добровольно ?
>а там внутри http и grpc-сервер, встраиваемая БД, рантайм для асинхронщины и много чего еще. Программа на многие тысячи строк кода, даже без учета зависимостей, которых сотниТы только, что описал язык Эмбаркадеро Дельфи. Дельфи тоже такой, попробуй.
>ls -lh hello
>-rwxrwxr-x 1 xx xx 1,3MОни там совсем больные? Шли бы они xx xx со своей статической линковкой. Языки, где hw - 1.3 MiB - ффтопку. Я лучше на питоне попишу.
> Они там совсем больные? Шли бы они xx xx со своей статической
> линковкой. Языки, где hw - 1.3 MiB - ффтопку.
cat hello_w.rs
fn main() {
println!("Hello World!");
}
$ rustc -O -C prefer-dynamic hello_w.rs && ll hello_w
-rwxr-x--- 1 анонн wheel 9,0K Jan 2 23:26 hello_w*$ rustc -O -C prefer-dynamic -C link-args="-s" hello_w.rs && ll hello_w
-rwxr-x--- 1 анонн wheel 6,4K Jan 2 23:26 hello_w
> Я лучше на питоне попишу.Действительно, будет лучше для всех.
> 3. У типичного исходника на Расте, какая парадигма? Вроде ОПП там нет, вроде язык не функциональный, вроде чистый Си они считают примитивным, тогда стуктурная парадигма тоже отпадает.Мне этот вопрос очень понравился. Я тебе советую отложить его и вернутся к нему после окончания второго курса. К тому моменту ты наберёшь достаточное количество знаний и опыта, чтобы понимать, что все эти "парадигмы" -- это бред теоретиков. Эти парадигмы не исключают друг-друга (функциональный язык может быть ООП языком, а ООП язык может быть структурным), и они не описывают всего спектра явлений. То есть, они не только не обладают никакой предсказательной силой, у них и описательная сила ниже плинтуса.
> бред теоретиков.Именно.
>> бред теоретиков.
> Именно.Ты огорчаешь меня. Чувак, сказав глупость, оставил провокацию, в ответ на которую я оставил такую провокацию, которая провоцирует встречную провокацию, которая позволила бы мне нырнуть в философию и изложить теорию создания теорий, которая может классифицировать теории и поливать дерьмом любые классификации внутри любых теорий. Между прочим можно было бы пройтись по технарям, которые ничего такого не понимают в силу ущербности своего образования. Такая у меня крутая провокация была, но ты вместо того, чтобы повестись на неё и начать спорить, берёшь и соглашаешься. Я в печале. Пришла пора повышать уровень игры?
Контрпример. Data-Oriented Design - вполне парадигма (заставляет писать код определенным образом: с разделением данных и обработчиков, обработчики работают со множеством локализованных в памяти данных) и вполне практична (подстраивается под ЦПУ, что дает более высокую производительность и распараллеливаемость кода).
Так-сс, где-то я это слышал...
хм..., Ах да, разделение данных и кода. Ты только что описал банальный ООП.Data-Oriented Design - это тупо ООП.
А если в коде есть функции - то это функциональный язык, да?
> разделение данных и кода. Ты только что описал банальный ООП.Вообще-то, в ООП объединяют данные (состояние) и их обработчики (методы).
> Data-Oriented Design - это тупо ООП.Это тайна, о которой знают только самые избранные, анонимные комментаторы? 🙄
Потому что остальные, как лохи, обычно противопоставляют OOP и DODhttp://gamesfromwithin.com/data-oriented-design
> Data-oriented design is a different way to approach program design that addresses all these problems. Procedural programming focuses on procedure calls as its main element, and OOP deals primarily with objects.
> ...
> A key reason why data-oriented design is so powerful is because it works very well on large groups of objects. OOP, by definition, works on a single object..
> Ты огорчаешь меня.YHBT :]
>> Ты огорчаешь меня.
> YHBT :]Тоже мне, открыл Америку. Меня постоянно троллят, в этом-то и весь фан.
>Сколько на Расте весит hello world? 3 или 5 Мегабайт?3.2M, если тебя это утешит. Eсть множество флагов, как эти 3.2M сделать до 100k, от банального cargo build --release и strip (около 250k), до cargo rustc --release -- -C prefer-dynamic — 17k.
Вопрос где мои 3 и 5 Мегабайт в hello world? Понимаю, жать на одну зелёную кнопку в IDE удобнее, чем разобраться во флагах компилятора, но может лучше смотреть в документацию языка, чем вот так штаны себе портить?
https://doc.rust-lang.org/rustc/codegen-options/index.html
https://github.com/johnthagen/min-sized-rustuser@user:~/dev$ cargo new hello_w
Created binary (application) `hello_w` package
user@user:~/dev$ cd hello_w/
user@user:~/dev/hello_w$ cargo build
Compiling hello_w v0.1.0 (/home/user/dev/hello_w)
Finished dev [unoptimized + debuginfo] target(s) in 0.38s
user@user:~/dev/hello_w$ cargo rustc --release -- -C prefer-dynamic
Compiling hello_w v0.1.0 (/home/user/dev/hello_w)
Finished release [optimized] target(s) in 0.14s
user@user:~/dev/hello_w$ strip target/debug/hello_w
user@user:~/dev/hello_w$ exa -lhT --level=3
Permissions Size User Date Modified Name
drwxrwxr-x - user 2 янв 22:36 .
.rw-rw-r-- 138 user 2 янв 22:36 ├── Cargo.lock
.rw-rw-r-- 196 user 2 янв 22:35 ├── Cargo.toml
drwxrwxr-x - user 2 янв 22:35 ├── src
.rw-rw-r-- 45 user 2 янв 22:35 │ └── main.rs
drwxrwxr-x - user 2 янв 22:36 └── target
.rw-rw-r-- 177 user 2 янв 22:36 ├── CACHEDIR.TAG
drwxrwxr-x - user 2 янв 22:36 ├── debug
drwxrwxr-x - user 2 янв 22:36 │ ├── build
drwxrwxr-x - user 2 янв 22:36 │ ├── deps
drwxrwxr-x - user 2 янв 22:36 │ ├── examples
.rwxrwxr-x 285k user 2 янв 22:36 │ ├── hello_w
.rw-rw-r-- 82 user 2 янв 22:36 │ ├── hello_w.d
drwxrwxr-x - user 2 янв 22:36 │ └── incremental
drwxrwxr-x - user 2 янв 22:36 └── release
drwxrwxr-x - user 2 янв 22:36 ├── build
drwxrwxr-x - user 2 янв 22:36 ├── deps
drwxrwxr-x - user 2 янв 22:36 ├── examples
.rwxrwxr-x 17k user 2 янв 22:36 ├── hello_w
.rw-rw-r-- 84 user 2 янв 22:36 ├── hello_w.d
drwxrwxr-x - user 2 янв 22:36 └── incrementalНа другие пункты даже нет смысла отвечать, они такой же мусор, как и первый вопрос.
А четвертый пункт, тоже мусор? Кто-нибудь ответит почему у компилятора Раст в зависимостях LLVM?Например, GCC есть в зависимостях binutils... , но это понятно, он содержит низкоуровневые вещи, типа GNU ассемблера.
Вопрос оформлен чуть ниже.
> Кто-нибудь ответит почему у компилятора Раст в зависимостях LLVM?По той же причине что и для flang (компилятор FORTRANа) и для gnat llvm (компилятор Ada) - бэкенд для генерации оптимизированного машинного кода под разные архитектуры.
4. LLVM явяляется зависимостью пакета Раст?
Тескт в статье противоречит официальной документации."Автоматическое управление памятью в Rust избавляет разработчика от ошибок <...>, таких как <...>, разыменование нулевых указателей<...>"
Официальная документация, "Behavior considered undefined":
<...>
* Dereferencing (using the * operator on) a dangling or unaligned raw pointer.
А где несоответствие?
Хаха, люди. Вы реально хотябы почитайте что такое Rust и с чем его едят..В rust есть СВОЕ понятие ссылок (нет, это не си ссылки) это так называемые безопасные указатели. Они используются в 99% случаях в вашем коде
это &T и &mut T
Данные ссылки не бывают null, их разыменовывать можно, имеют лайфтаймы (тоесть управляемые времена жизни).
А есть unsafe это уже действительно сишные СЫРЫЕ указатели (прямо то что и написано в отрывке вашей документации)это *const T и *mut T
Они могут быть и null, всегда без лайфтаймов, и работать с ними нормально можно лишь ЧЕРЕЗ UNSAFE. Если не использовать безопасные обертки для этих указателей, то rust будет автоматически проверять данное на null и делать разные другие контролируемые вещи...А лайфтаймы нужны для контроля освобождения и запрета разрабу использования освобожденной памяти, заимствованой памяти... Одновременное обращение к & в то время когда есть &mut и другое...
По-моему вы малость перевираете.Обычная переменная в Rust - это аналог умного указателя std::unique_ptr из C++11. Константного или неконстантного - с mut.
А вот заимствование '&' - это почти тоже, что и ссылка в С++, где она также не должна ссылаться в никуда. Только в Rust мы ссылаемся на умные указатели, которые на момент доступа по ссылке могут быть "пустыми", передавшими свое значение. Тогда Rust, чтобы обеспечить заявленные гарантии безопасности, следит и заставляет следить программиста за временем жизни всех ссылок и "переменных", на которые те ссылаются. Отсюда все эти одинарные кавычки в прототипах функций и танцы с вложенными блоками {}.Я, правда, дальше чтения документации не уходил. Может, кто-то практикующий Rust меня поправит, будет всем полезно.
Обычная переменная в Rust - это обычная переменная и лежит на стеке, если её оптимизатор не положит в регистр. Перемещения значения из переменной ничего не делает с содержимым памяти, в котором это значение лежало. Отсутствие обращений к переменной, из которой было перемещено значение, проверяется только во время компиляции.Заимствование в Rust - это не ссылка из C++. Семантически, ссылка в C++ - это другое имя (alias) для какой-то переменной. Поэтому в С++ запрещено брать адрес ссылки, например. В Rust заимствование - это указатель на память, с дополнительным гарантиями: указывает на валидное значение, нет алиасинга мутабельных указателей. Лайфтаймы ("одинарные кавычки") - это средство обеспечения указанных гарантий во время компиляции.
Спасибо за пояснения.Ожидаемо, что паттерн "уникальный умный указатель" реализован в Rust более эффективно, как compile-time проверки компилятора над действиями с именнованными областями памяти, нежели, как исторически сложилось в С++, средствами обобщенного программирования. Однако, область применения ведь аналогична юникам из плюсов (а не переменным)?
С заимствованиями, в общем тоже не нашел противоречий по временам жизни. Но аналогия с указателями С++, мне всё же кажется неточной. Ведь мы же не можем поменять заимствованный адрес? Только затенить связанное имя? То есть, не вдаваясь в детали реализации, это всё же больше похоже на ссылку из С++, где, в отличие от указателя, имя жестко связано со значением, а разыменования неявны.
P.S. Ох. Надо начинать практиковаться, пока всё прочитанное из головы не выветрилось или не перемешалось. Пользуясь случаем, не посоветуете Rust IDE (с поддержкой Linux)? Пробовал Gnome Builder и QtCreator. Но всё какое-то гвоздями приколоченное, на честном слове, работает через раз. А я ведь дальше хеллоуворлда, запущенного под отладчиком не уходил. На чём вообще работают программисты Rust? Плагины для тяжеловесных полупроприетарных Java IDE? Плагины для блокнотов/вимов/емаксов? Или есть какая-то секретная, открытая, идиоматичная IDE-мечта?
> Однако, область применения ведь аналогична юникам из плюсов (а не переменным)?Разделение точно такое же как в C++. Переменные лежат на стеке, уники (в расте Box) указывают на аллоцированный объект и владеют им. Отличие в том, что move семантика в расте применяется к переменным содержащим значения, которые нельзя тривиально скопировать (не Copy типы). Переменные, содержащие значения Copy-типов в расте соответствуют переменным в С++ с тривиальными конструкторами копирования.
> Ведь мы же не можем поменять заимствованный адрес?
Можем и поменять и разыменование явное. Единственное, что похоже на ссылку - гарантия валидности значения на которое указывает заимствование.
let a=1;
let b=2;
let mut reference = &a;
reference = &b; // поменяли адрес
let c = *reference; // разыменование явное
> Пользуясь случаем, не посоветуете Rust IDE (с поддержкой
> Linux)?Я пользуюсь VS Code с плагином rust analyzer. Rust analyzer ещё работает с vim, emacs, sublime и gnome builder, но их не пробовал.
А, разобрался. Действительно, unique_ptr<T> - более специфичен из-за выделения памяти под объект типа T в куче.
Остановлюсь на том, что переменные в языках схожи. Если тип реализует типаж Copy, то конструктор тривиальный-копирующий, нет - перемещающий.По второму вопросу, сбило с толку, что ```fn ln(s: &str) -> usize { s.len() }``` без явного разыменования ```(*s).len()```. Но в вызове функции ```ln(&"hello");``` и других местах, оно действительно выглядит как передача адреса указателю в С++. Проморгал, каюсь.
> VS Code
Эх, у меня аллергия на продукты, содержащие Javascript. :) Придётся, поискать что-то ещё.
В общем, спасибо. Буду изучать. Уж больно этот Rust интересный и многообещающий язык, не на Опеннете будет сказано.
red75prim, Wilem родившийся 1982 году, и прикормленный эксперт-аноним, котоый обещал выучить Раст. Спасибо всем троим за рекламную болтовню, теперь вы свободны.
Как и любая технология, придуманная в десятые — невообразимо переусложнённое хипстерское убожество. Бейджики с местоимениями на конференциях прилагаются. Уже когда у разработчиков возникла ИДЕЯ cargo, например, или слизывания Haskell, язык был обречён. Позовите, когда сделают урезанный C с такой же моделью памяти, а-ля Cyclone.
кобол вам в тапки, числа с фиксированной запятой и форматы вывода
> Как и любая технология, придуманная в десятые — невообразимо переусложнённое хипстерское убожество.не, у раста синтаксис немного сложноватый с непривычки, но в целом его легко запомнить и больше в руководство не смотреть
> Уже когда у разработчиков возникла ИДЕЯ cargo, например, или слизывания Haskell, язык был обречён.
А чем вам карго не нравится? и чего вы вообще имели ввиду? обречён на любовь разработчиками и ненависть хейтерами?
> обречён на любовь разработчиками и ненависть хейтерами?На приседная со штангой имени теории категорий. Взрослым это некогда, нужно делать деньги.
> На приседная со штангой имени теории категорий. Взрослым это некогда, нужно делать деньги.Почему вы загадками пишите? Я правильно понимаю, что вы как бы намекаете, что вы взрослый и делаете деньги?
Rust к теории категорий не имеет отношения. Без глубоких познаний в ней в теории и на Хаскеле можно прожить... Что уж говорить про Rust, вы его с Haskellом не путайте. А то это демонстрирует плохую вашу осведомленность о расте, хаскеле или обоих
>Уже когда у разработчиков возникла ИДЕЯ вступить в культ cargoПоправил.
Чтобы было проще было собирать мусор. Хруст сразу генерирует мусор.
Смузи вечеринка в разгаре
У комментаторов прям спермотоксикоз на раст. Это хорошо - стадия отрицания на лицо)
А у тебя стадия гнев. Ничего скоро вырастишь, маленький джигит. И примешь то что Раст это ошибка.
Да ладно, если кому-то доставляет, то пусть пользуются на здоровье
Чаще раста наверное ни один яп так не получает обновы.
Потому что кроме как писать на нём Раст язык больше ни для чего не подходит.
Так его пишут на C++.
Rust написан на Rust, ранее был на OCaml.
Это в реальном мире. А тот аноним, как и многие другие анонимы - из параллельной вселенной. Что доказывает, что Опеннет пронзает пространственно-временной континуум.
Согласно интерпетации квантовой механики от Хью Эверетта, существует потенциально бесконечное число вселенных, в которых есть Опеннет - возможно, даже те, где все комментаторы адекватны.
Для чего не подходит?Embedded? Браузеры? Операционные системы? Прикладное ПО? Блокчейн? Базы данных? ... (даже игры есть)... (этот список можно продолжать вечно.)
Ты не написал названия ни одного такого приложения. А все эти хеллоуворлда/реактос подобные поделки типа Redox никому не нужны.
Я писать? Зачем? Зайдите хоть на сайт Rust, посмотрите кто его использует)...
Нет, это как раз обычный темп. C++, C#, ECMAScript и т.п. обрастают хламом с той же скоростью, а хипстеры радуются и просят ещё. Единственные серьёзные, консервативные языки в 2020 — это C и Go.
> и Go.Это в каком месте оно консервативное ? В буклетиках от гулга ?
Да, rust является очень быстро растущим языком.. но и при этом очень стабильным на Api.
Таблетки принимать начинай уже. Раст не растущий и api у него постоянно меняется.
Я просто промолчу:))...Изучите хотябы немного rust, а уже потом пишите "дая все знаю, раст видал!".
Столько желчи…
Непонятно, отчего это у C#-стов так nogropaeт от одной только новости?
эта шляпа собирается больше часа на машине, где питон собирается в районе минуты. надо найти, что именно тянет в зависимостях раст и выпилить. Сорян, ребят, вам с гентой не по пути. разве что бакдоры удобнее скрывать в таком обьеме кода
Я об этом на каждом углу кричу. Более гигабайта непонятного, нечитаемого говнокода. О каком доверии вообще может идти речь ? А еще и отсутствие каких либо причин его использовать. Жаль лиш что некоторые проекты отравили этой гадостью и теперь они мертвы. Будем форкать и пилить, а что остается если изначальные авторы такое допустили.
> А еще и отсутствие каких либо причин его использовать.Вызывает бурную, экзотермическую реакцию на опеннете - уже за одно это его можно использовать.
> Будем форкать и пилить. Правда, только в мечтах и размышлизмах на опеннете.Поправил для хоть какого-то соответствия с реальностью.
> а что остается если изначальные авторы такое допустили.Сколько-сколько годков librsvg была без мейнтейнера, совершенно никому (в том числе и теперешним кричальщикам "Караул! Все пропало! Не смейте форкать и переписывать нашу прелесть!") не нужной, 4 или только 3?
У тебя все в мечтах, выучить хруст тоже. Кто не осилил программирование - думает что хруст их спасет, лол. Практики (с правильной версией librsvg в том числе) и пока к сожалению не централизованным набором патчей - ржут над такими как ты.
Что, у кого-то есть не хрустанутая libsvg? Явне не в гноме, в гноме она безальтернативна. Интересно, а в хрустанутой тоже есть уязвимости вроде исполнения произвольного кода при открытии файла?
Это такой тупой поворот в троллинг ? Ну тогда спускай весь свой пафос в /dev/null, librsvg, а не libsvg трололо ты необразованное.
Да не, мне просто плевать, как она называется. И это нормально. В идеале было бы выкинуть руст, а то уже целые 2 программы его требуют. Ты не ответил на вопрос, кстати? Видимо, уязвимости svg никуда не делись, просто потому. что это svg? Так и скажи тогда.
> У тебя все в мечтах, выучить хруст тоже. Кто не осилил программирование - думает что хруст их спасет, лол.Т.е. ссылки на твой форк librsvg (или другой "оскверненной" ржавчиной либы), готовый для использования проектами GTK/Gnome/Gimp и т.д - не будет. Только отмазки и пафосные рассуждизмы не по теме (со старательным избеганием конкретики).
> Практики (с правильной версией librsvg в том числе) и пока к сожалению не централизованным набором патчей - ржут над такими как ты.
> пока к сожалению не централизованным набором патчейНу т.е. ты сам подтверждаешь написанное мною выше - официального форка, на который могли бы перейти разработчики софта, так и нет (некогда опеннетным "практикам" форкать, нужно ныть в комментах, патчить "нецентрализованным набором патчей" и пересобирать весь зависимый софт).
Что почему-то вызывает у тебя беспричинный "ржач" и отчего-то поднимает ЧСВ.Надеюсь, это не заразно.
Любой нормальный гентушник понимает что огромные исходники rust это нечитаемый говнокод с бэкдорами, а огромные исходники ядра, libreoffice, chrome, mysql, mesa и т.д. это читаемый правильнокод без бэкдоров
Только тупые растофанатики не понимают что это другое
> исходники ядра > 5.x , libreoffice, chrome, mysql, mesa и т.д. это читаемый говнокод с бэкдорамиМаленькая правочка. Не благодари.
А зачем ты его собираешь? Ладно, допустим на то есть нормальная причина - ну собрал ты его один раз, какая разница сколько он собирался? Запускается-то он потом не час, а мгновенно.
> Опубликован релиз языка системного программирования Rust 1.49, основанного [и выброшенного] проектом MozillaВот так правильно.
Вот что это за хрень #[derive(Debug)], #[no_mangle], #[test]
Где можно найти реализацию в компиляторе? 😕
В языке разбираться нужно тогда найдёшь
> Вот что это за хрень #[derive(Debug)], #[no_mangle], #[test]
> Где можно найти реализацию в компиляторе? 😕Да, ты не дорос до понимания этой фигни которую авторы заговнокодили по накурке. И вместо того чтоб устыдиться и переделать все по нормальному - выработана стратегия огрызания.
#[derive] Автореализация трейта Debug для чего-либо компилятором, без описания кода.
#[no_mangle] Скорее всего вы открыли extern функцию подготовленную для запуска в си, no_mangle запрещает rust компилятору воротить и изменять имя функции.
#[test] В расте встроенные фитчи автотестирования, просто пишите функцию, пишите #[test] перед названием и данная функция будет восприниматься и запускаться автотестером с целью поиска ошибок.
Почитай документацию, там объясняют.
Отличная новость, молодцы
Вот что за язык такой непонятный этот Rust/ Вот смотрите как понять где лежит:
use std::fs::File;
use std::io::prelude::*;
use std::path::Path;Python, Java, Golang в этом плане более понятные, там import'ы и в исходниках языка можно ЛЕГКО найти код
Java:
import java.io.*;
Python:
import os
Golang:
import (
"bufio"
"fmt"
"io"
"io/ioutil"
"os"
)
> use std::fs::File;
> use std::io::prelude::*;
> use std::path::Path;А это разве не perl?
А теперь слово use в воображении смени на import и :: на . и вуаля (понимаю, сложно, но попробуй напрячься - такие упражнения на воображение пойдут тебе на пользу). Я уже начинаю полагать, что у людей, которые кричат тут, что не могут понять синтаксис Rust, есть серьезные проблемы.
Напрягись Иваня, тужсо тужсо родной.
вьюнош, то вы еще не пытались понять, где лежит #include <file>, а где - #include "file".где лежат use strict; use warnings; я и сам доси толком не знаю.
Идея чтобы некоторой сторонний алгоритм заботился о ошибки и освобождение памяти в моём коде мне не нравится.
Или всё или ничто.
Ну сам-то ты даже о том, чтобы согласовать слова в предложении без ошибок, не можешь
позаботиться.
Постараюсь, русский язык не родной, извини.
Мамбет ты плов умеешь готовить?
Заботится не "некий алгоритм", а компилятор.
Обвинять компилятор в том, что он проверяет код на ошибки и требовать, чтобы компилятор что-то додумывал в коде от себя, вместо того, чтобы спросить человека, что он на самом деле хотел - несколько странновато.
Сидит программист, чуток расслабился. Подходит чувак с палкой и хрясь его по спине, приговаривая: "Сиди с ровной спиной".Этот чувак с палкой - компилятор языка Раст.
А потому что нехрен расслабляться, когда программируешь. Стоит только разок расслабиться, и вот уже полезли ошибки в работе с памятью. Хочешь расслабиться, дуй на тропический остров, и там, лёжа на пляжу, потягивай смузи.
А потом после такого сидения деформируется позвоночник и никакой мануальщик не спасёт.Уж лучше чувак с палкой.
Скорее так: сидит погромист, чуток расслабил булки, и код начал менять цвет. Подходит чувак с палкой и хрясь его по башке: "Не говнокодь!".
> чуток расслабил булки ... Подходит чувак с палкой ......и присунул палку. Вот этот чувак и есть растаман.
> ...и присунул палку. Вот этот чувак и есть растаман.Ага, вот и говорю - какой-то ненормальный. Приходит комментировать в мертвых темах про свои больные фантазии.
Без автоделегирования не нужно.
Синтаксис уж извинте - полное г. Если бы не навязывание - воспринималось бы как очередной nim, jullia и тому подобное.
А тебе прямо навязывают, ага. Приходишь такой после работы домой, а у тебя дома сидит мужик в кожаной куртке и с пистолетом.
- Руки за голову, мордой в пол!
На полу мелом написан код.
- Читай!
- Пожалуйста, не надо, заберите мои дискеты с курсачами на плюсах и анимешную подушку, только не трогайте.
Мужик приставляет дуло к виску:
- Borrowed value does not live long enough.
> после работы домой, а у тебя дома сидит мужикТы какой-то больной. В детстве не роняли головой ?
Последнее победное слово!Rust != POSIX, Rust != Unix-like. Растаманы против GNU, Свободы и копилефта.
Все эти разговорчики про синтаксис и Cargo это детский сад. Знайте главное - они ненавидят копилефт. А копилефт - это основа GNU/Linux. Этот тред вывел их на чистую воду.
Бекенд Раста LLVM. А LLVM запилили только ради того чтобы повергнуть GCC с пьедестала. LLVM профинансировали проприетарщики.
Среднестатистический растаман является типичным пермиссивщиком, если не копирастом.
Короче, минуя промежуточные звенья твоей алогической цепи, растоманы - это служители тайного правительства жидорептилоидов. Но, на всякий случай, таблетки выпей.
Какие несуществующие проблемы решены в этот раз?
А от ковида раст уже защищает?
Не нужно