LINUX.ORG.RU

Rust 1.34

 ,


2

11
  • cargo теперь умеет в сторонние репозитории

  • оператор ? теперь может использоваться в доктестах

  • стабилизированы трейты TryFrom и TryInto

  • стабилизированы типы AtomicU8AtomicU64 и AtomicI8AtomicI64 в дополнение к имевшимся ранее Atomic{Bool,Ptr,USize,ISize}

  • стабилизированы типы NonZeroI8NonZeroI128 и NonZeroISize в дополнение к имевшимся ранее беззнаковым аналогам

https://blog.rust-lang.org/2019/04/11/Rust-1.34.0.html

★★★★★

Последнее исправление: MyTrooName (всего исправлений: 3)

Ответ на: комментарий от NishiragiShintaro

а не убогую динамическую дристню из строки

json!() же не динамический, как и println!(), в отличие от сишки. Можно делать такое, и оно потом скомпилируется, и не будет ничего в рантайме делать особого.

let john = json!({
  "name": "John Doe",
  "age": 43,
  "phones": [
    "+44 1234567",
    "+44 2345678"
  ]
});

Deleted
()
Ответ на: комментарий от Deleted

Есть такая же штука и для html, и для прочего, удобно.

Deleted
()
Ответ на: комментарий от Deleted

json!() же не динамический,

Динамический.

как и println!()

Динамический.

Можно делать такое, и оно потом скомпилируется, и не будет ничего в рантайме делать особого.

Будет. Ты явно что-то перепутал.

Эти макросы в расте - это просто отдельный язык дерьма. Такое ещё в бородатые годы придумали для сишки - m4, какой-нибудь qmoc, http://siliconframework.org/docs/symbols.html . Это примитивная херня. Хотя вся эта херня куда менее примитивна, нежели в расте.

Что она делает - она просто берёт список этого говна и генерирует из него код. https://github.com/serde-rs/json/blob/master/src/macros.rs - это тот же m4 40 летней давности. Сильно.

Эта параша ничего не делает - просто берёт и разбирает аля-жсон, который ты ему передаёшь. Но оно не создаёт из него объект. Оно преобразует его в код, который и будет создавать объект в рантайме. Этот объект - динамический.

NishiragiShintaro
()
Ответ на: комментарий от NishiragiShintaro

Не нравится мне, конечно, стилистика вашей беседы, и вообще я не растоман, а предпочитаю D, но насчет модулей и инклюдов соглашусь, что инклуды намного хуже потому что важен их порядок и место - я в свое время потратил день, если не больше пока пофиксил баг с порядком инклудов. При определенном порядке инклудов компилятор (gcc 4.7.2) генерировал левый код в котором порядок полей в структуре не соответствовал реальному, методы в итоге обращались не к тем полям и все крашилось по очень мутной схеме.

Зависимость результата от порядка следования инклудов, а также их места - это фундаментальный недостаток механизма инклюдов.

Ну и есть минорщина еще:

  • инклуды обрабатывает не компилятор, а препроцессор - в D могу в компайл-тайме узнать в каком модуле я нахожусь, пробежаться по его символам и сделать что мне надо. С препроцессором этого нельзя в принципе.
  • нельзя делать перекрестные ссылки - иногда нужно из модуля Foo импортировать симвом Bar.oneThing, а из модуля Bar импортировать Foo.anotherThing и инклуды этого не позволят в отличие от модулей. Да, без этого можно прожить или обойти, но это упрощает архитектуру.
  • в D я могу импортировать конкретный символ из конкретного модуля в конкретном скоупе. Это делает код чище, вероятность конфликта символов минимальна (в свое время был озадачен сообщением компилятора, что функция foo ожидает аргумент типа Bar, а получен аргумент типа Bar - оказалось, что это два разных типа Bar, каждый в своей библиотеке и эти библиотеки импортировались одновременно)
yetanother ★★
()
Ответ на: комментарий от NishiragiShintaro

Про m4 я знаю хорошо, однако неужели в Rust все так плохо?

Но оно не создаёт из него объект.

Растолюбы, напишите, так ли это.

Deleted
()
Ответ на: комментарий от Deleted

Ты думаешь это дерьмо может читать человек? Как там, удобно? Я такого дерьма давно не видел. Ну в целом, в говнорасте используется самое простое решение. Убогий синтаксис аля-м4 для внешнего языка макросов. Т.е. ещё хуже, чем сишный препроцессор.

В крестах это делается как-то так: https://boost-experimental.github.io/di/examples/index.html#annotations


  auto json = {
    "name"_s =  "John Doe",
    "age"_s =  43,
  };

Но в любом случае - это полный треш. Т.к. создавать жсон говна из текста - ненужно. Все нормальные люди используют модели, а это попросту треш для дошкольников.

NishiragiShintaro
()
Ответ на: комментарий от NishiragiShintaro

Как там, удобно? Я такого дерьма давно не видел.

+1. Особенно смешно выглядят растеры жалующиеся на читаемость в С каком нибудь.

Но в любом случае - это полный треш. Т.к. создавать жсон говна из текста - ненужно

Мне просто нравится динамичность, кое где мне бы хотелось ее использовать, хотя желание странное, да.

Deleted
()
Ответ на: комментарий от Deleted

Растолюбы, напишите, так ли это

не вижу в реализации макроса const, так что, видимо, да

MyTrooName ★★★★★
() автор топика
Ответ на: комментарий от yetanother

Зависимость результата от порядка следования инклудов, а также их места - это фундаментальный недостаток механизма инклюдов.

Нету такого недостатка. Единственная проблема какая там есть - это циклические зависимости, да и то я сомневаюсь, что это раст-говно эту проблему решает.

Если ты где-то там в инклюдал начал изменять глобальное состояние - это чисто твоя проблема. И инклюды тут никаким боком.

инклуды обрабатывает не компилятор

Я выше уже отвечал на это.

в D могу в компайл-тайме узнать в каком модуле я нахожусь, пробежаться по его символам и сделать что мне надо. С препроцессором этого нельзя в принципе.

Зачем мне это нужно?

нельзя делать перекрестные ссылки - иногда нужно из модуля Foo импортировать симвом Bar.oneThing, а из модуля Bar импортировать Foo.anotherThing и инклуды этого не позволят в отличие от модулей. Да, без этого можно прожить или обойти, но это упрощает архитектуру.

С модулями это никак не связано.

в D я могу импортировать конкретный символ из конкретного модуля в конкретном скоупе.

Зачем мне жрать говно?

Это делает код чище,

В твоих фантазиях, а в реальности превращается в 10 страниц импортов. И на это я так же отвечал.

вероятность конфликта символов минимальна (в свое время был озадачен сообщением компилятора, что функция foo ожидает аргумент типа Bar, а получен аргумент типа Bar - оказалось, что это два разных типа Bar, каждый в своей библиотеке и эти библиотеки импортировались одновременно)

Это никак не связано с инклюдами. В ситуации с инклюдами вообще нет такого понятия как «импортирован». «импортируй» в неймспейс.

Вообщем, все твои претензии свелись к дефолтной методичке про препроцессор на которую я уже отвечал. Инклюды не обязательно должны быть реализованы через препроцессор.

Про «два bar» я уже так же отвечал. Для решения проблемы нужно добавить лишь импорт в неймпейс. Да и вообще писать адекватно и проблем не будет.

Все проблемы решаются несколькими дополнениями. Выделение для каждого инклюда свой скоуп, допустим через анонимный неймспейс. Импорт в неймпейс(аля дарт, о чём я так же уже говорил). И выпил препроцессора.

NishiragiShintaro
()
Ответ на: комментарий от Deleted

Мне просто нравится динамичность, кое где мне бы хотелось ее использовать, хотя желание странное, да.

Да нету там динамичности. Это просто нечитаемое и неюзабельное дерьмо.

В крестах без проблем пишется автокастилка и без проблем всё работает. https://godbolt.org/z/jq8WLi

Причём ты это можешь сделать и в компилтайме, делая какие угодно проверки. А так же всё это в рамках языка, в рамках логики языка, а не где-то во внешнем дерьме. https://youtu.be/Grveezn0zhU?t=2714 - просвещайся. Там ещё много всякого. Ради тебя искал пол часа. Там про «как в пистоне» - ты же у нас пистонщик.

NishiragiShintaro
()
Ответ на: комментарий от NishiragiShintaro

В крестах без проблем пишется автокастилка

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

https://youtu.be/Grveezn0zhU?t=2714 - просвещайся. Там ещё много всякого. Ради тебя искал пол часа.

Просвещусь!

Там про «как в пистоне» - ты же у нас пистонщик.

Но я не пишу на питоне %) Да и не нравится мне он особо.

Deleted
()
Ответ на: комментарий от Deleted

Растолюбы, напишите, так ли это.

Чтобы статически создать объект, нужен const fn.

O02eg ★★★★★
()
Ответ на: комментарий от Deleted

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

В расте нельзя писать json «как он пишется». В расте можно можно передавать json-подобную дристню в макросы. Но в самом расте этого нет. Т.е. по-сути ты просто пишешь текста в макрос.

В плюсах это есть подобный синтаксис:

  struct json_t {
    std::string name;
    size_t age;
  };


  json_t json{name: "", age: 123};

Это гнутое, дефолтное =. Как ключ в инициализаторе не может быть строка, там может быть только идентификатор. Как и в любом статическом языке.

К тому же, всё это говно ненужно. Никто там жсон не пишет.

NishiragiShintaro
()
Ответ на: комментарий от NishiragiShintaro

В расте нельзя писать json «как он пишется».

Да просто надо с чем то сравнить, Rust я брать не собираюсь конечно, но там более json'овее.

В плюсах это есть подобный синтаксис

Я потом посмотри библиотеки, скажу в чем именно проблема.

Deleted
()
Ответ на: комментарий от NishiragiShintaro

Что она делает - она просто берёт список этого говна и генерирует из него код.

В этом суть любых макросов.

Но оно не создаёт из него объект. Оно преобразует его в код, который и будет создавать объект в рантайме.

Это деталь реализации конкретно этого макроса.

anonymous
()
Ответ на: комментарий от anonymous

В этом суть любых макросов.

И? Мне с этого что? Суть макросов - суть говна. Я ведь критику не только раст как одну из самых нелепых реализаций макросов, но и вообще макросы.

Это деталь реализации конкретно этого макроса.

Неверно. Это делает любой макрос. Потому что у тебя попросту нет средств для имплементации иного. А даже если бы были - это ничего не даст, т.к. все эти говнолибы - студенческие поделки.

NishiragiShintaro
()
Ответ на: комментарий от NishiragiShintaro

Неверно. Это делает любой макрос.

Не любой, а только тот, содержимое которого не может быть выполнено в compile-time.

Потому что у тебя попросту нет средств для имплементации иного.

То, что не могут декларативные макросы — могут процедурные.

anonymous
()
Ответ на: комментарий от NishiragiShintaro

Я же под инклюдами имею ввиду отсутствие .cpp-файлов вообще, если по-простому.

Царь, твой опыт в написании хэлловорлдов мало кому интересен.

mersinvald ★★★★★
()
Ответ на: комментарий от mersinvald

Иди, балабол, гугли на тему ho, а так же на то как написана libc++/boost и прочее. Хотя твои рассуждения, эникей, действительно никому неинтересны.

NishiragiShintaro
()
Ответ на: комментарий от yetanother

Зависимость результата от порядка следования инклудов

А ты что хотел от фактической прямой подстановки текста этим действием?

grem ★★★★★
()

cargo теперь умеет в сторонние репозитории

MyTrooName а теперь потрудись сие синтаксическое чудовище преобразовать в нормальный русский язык. Корректорам просьба - предь не пропускать проф. жаргоны в новости.

anonymous
()
Ответ на: комментарий от anonymous

MyTrooName не умеет

в нормальный русский язык.

А это технический раздел

MyTrooName ★★★★★
() автор топика
Последнее исправление: MyTrooName (всего исправлений: 1)
Ответ на: комментарий от anonymous

cargo теперь умеет в сторонние репозитории

MyTrooName а теперь потрудись сие синтаксическое чудовище преобразовать в нормальный русский язык. Корректорам просьба - предь не пропускать проф. жаргоны в новости.

Это топик на форуме, а не новость, месье.

Virtuos86 ★★★★★
()
Ответ на: комментарий от anonymous

а теперь потрудись сие синтаксическое чудовище преобразовать в нормальный русский язык. Корректорам просьба - предь не пропускать проф. жаргоны в новости.

Как бы вся суть. Ничего лишнего. Не понимаю таких придирок от дебилов. Какая разница, как кто считает правильным. Человек очень кратко изложил мысль. Тот кто мог понять суть в полном варианте, гораздо проще ее понял в таком. Язык свою задачу выполнил, передав информацию. Все!

anonymous
()
Ответ на: комментарий от NishiragiShintaro

Сразу видно мамкиного умника уровня начальной школы.

Генерировать типы из JSON? Как? Нахрена? Определение кастомного типа (Твой КО) делается средствами языка и JSON тут нахрен не нужен:

struct Foo {
    bar: Bar,
    baz_quux: (Baz, Quux),
}

Если ты всё же имел ввиду инстансы типов, то опять же нахрена их делать из JSON-a статически, когда можно просто сделать инстанс средствами языка?

const FOO_C: Foo = Foo {
    bar: Bar { /* ... */ },
    baz_quux: (Baz { /* ... */ }, Quux( /* ... */ )),
};

lazy_static! {
    static ref FOO_S: Foo = Foo {
        bar: Bar::create( /* ... */ ),
        baz_quux: (Baz::spawn_me_one(), Quux::quuxious()),
    };
}

А вот с динамикой начинается веселье: в ржавчике нужна ровно одна строчка, что бы сделать тип (де)сериализируемым:

#[derive(Serialize, Deserialize)] // <- эта
struct Foo {
    bar: Bar,
    baz_quux: (Baz, Quux),
}

Так что там твои сишные макросы могут этому противопоставить? Простыню длиною в N аргументов - полей структуры, генерирующую ту же самую «динамическую дрисню», просто потому что их максимум - подстановка текста?

dear_amomynous_v2_1
()
Ответ на: комментарий от dear_amomynous_v2_1

Так что там твои сишные макросы могут этому противопоставить?

Препроцессор может быть любым, «стандартный» есть просто для переносимости программ.

Deleted
()
Ответ на: комментарий от dear_amomynous_v2_1

Сразу видно мамкиного умника уровня начальной школы.

Ламерюга убогая, на кого ты решила кукарекать?

Генерировать типы из JSON? Как? Нахрена? Определение кастомного типа (Твой КО) делается средствами языка и JSON тут нахрен не нужен:

Трепло дошколятское, если он ненужен - зачем он есть в мануале? Побежал объяснятся.

Если ты всё же имел ввиду инстансы типов, то опять же нахрена их делать из JSON-a статически, когда можно просто сделать инстанс средствами языка?

Это рантайм, ламерюга. То, что ты там увидел «стати» - это не значит, что оно не рантайм и не динамическое.

А вот с динамикой начинается веселье: в ржавчике нужна ровно одна строчка, что бы сделать тип (де)сериализируемым:

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

Так что там твои сишные макросы могут этому противопоставить?

Ламерок, мне ненужны макросы для сериализации. К тому же, трепло убогое, где у тебя там язык? Почему ты в одном случае кукарекаешь о убогих костылях, а в другом случае кукарекаешь об реализации на языке.

Простыню длиною в N аргументов - полей структуры, генерирующую ту же самую «динамическую дрисню», просто потому что их максимум - подстановка текста?

Ламерок, подстановка текста - это максимум твоего недоязычка. Именно так это говно и работает. #[] - это и есть текст, по которому дошколятский огрызок фронта вставляет просто портянку.

Это даже до уровня какой-нибудь odb не дотягивает, а это нулевые года.

NishiragiShintaro
()
Ответ на: комментарий от dear_amomynous_v2_1

Особенно смешит кукаретинг о сериализации подов. Этим жопу вытирали все и оно никому не интересно. Это уровень auto [a, b] = foo;

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

NishiragiShintaro
()
Ответ на: комментарий от NishiragiShintaro

Ламерюга убогая, на кого ты решила кукарекать?

Какой ты у нас грозный, у-тю-тю :3

Трепло дошколятское, если он ненужен - зачем он есть в мануале? Побежал объяснятся.

Где? Макрос json генерирует инстансы, а не типы, глупышка.

Это рантайм, ламерюга. То, что ты там увидел «стати» - это не значит, что оно не рантайм и не динамическое.

У тебя и со зрением, и с головой не в порядке? Мне тебя жаль. То что const не имеет рантайма, надеюсь, тебе очевидно? А что static его не имеет я и не говорил. Хотя стоимость его ничтожна, особенно если то что в нём - невозможно/не имеет смысла инлайнить. То, что структуру невозможно сделать константной и приходится использовать static, как бы на это намекает, если до твоих куриных мозгов сразу не дошло.

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

Тебе опять мерещится? Где ты там увидел «средство языка», касательно процедурных макросов? Хотя да, ты прав, хоть с собой и не согласен, юный ты наш шизик :3

То то в твоей сишечке её не бахнули за сколько там, лет 40-50? Одни только костыли сбоку на не-суперклей посадили, что теперь в этой грязи с ходу не всегда разобраться можно.

Ламерок, мне ненужны макросы для сериализации. К тому же, трепло убогое, где у тебя там язык? Почему ты в одном случае кукарекаешь о убогих костылях, а в другом случае кукарекаешь об реализации на языке.

Ручками всё напишешь? И ещё время что бы громко пукнуть на ЛОРе останется, да? Ты у мамы умница. Я тебя, сына говна, просто перед фактом ставлю: здесь я могу так сделать, на этом языке, а сам знаешь где - не могу. Знаешь почему? Потому что сам знаешь где такого просто напросто нет!

Ламерок, подстановка текста - это максимум твоего недоязычка. Именно так это говно и работает. #[] - это и есть текст, по которому дошколятский огрызок фронта вставляет просто портянку.

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

dear_amomynous_v2_1
()
Ответ на: комментарий от Deleted

Да, это так. Но даже если переносимость не важна, зачастую препроцессоры сделаные в качестве «работы над ошибками» выглядят инородно и не так приятны в использовании как то, что сейчас предлагает ржавчик.

dear_amomynous_v2_1
()
Ответ на: комментарий от NishiragiShintaro

Ты бы хоть тему повеселее задал, а то сраться с тобой как-то уныло и скучно.

dear_amomynous_v2_1
()
Ответ на: комментарий от dear_amomynous_v2_1

и не так приятны в использовании как то, что сейчас предлагает ржавчик

Ты его макросы считаешь приятными?

Deleted
()
Ответ на: комментарий от dear_amomynous_v2_1

Где? Макрос json генерирует инстансы, а не типы, глупышка.

И? Методичка опять потекла. Использовать текст на уровне компилтайма не имеет смысла. Ты бы мог ещё про полезность генерации инстансов в рантайме, но для этого никакая макросня ненужна.

Давай попроще, дошколёнок. Я не говорил, что json-говномакрос генерирует типы, я говорил о том, что он делает такую же бесполезность. Т.е. твои потуги так же применяются к этому макросу.

То что const не имеет рантайма, надеюсь, тебе очевидно?

Это отсылка на попытку ламерков перепастить в говнораст constexpr? Нет, не очевидно.

А что static его не имеет я и не говорил.

Ты пытался оппонировать моему тезису «это динамик-говно». К чему ты это кукарекал?

Хотя стоимость его ничтожна, особенно если то что в нём - невозможно/не имеет смысла инлайнить.

Опять какие-то маня-фантазии. Статик ничего не делает и стоимость его такая же.

То, что структуру невозможно сделать константной и приходится использовать static, как бы на это намекает, если до твоих куриных мозгов сразу не дошл

Ну то, что твой недоязычок говно я итак знаю. Зачем ты мне это рассказываешь?

То то в твоей сишечке её не бахнули за сколько там, лет 40-50? Одни только костыли сбоку на не-суперклей посадили, что теперь в этой грязи с ходу не всегда разобраться можно.

У тебя опять методичка потекла. Любой школьник может это впихнуть в сишку, да и впихивали уже. Этого нет в стандартной сишке, а у тебя стандарта нет. Поэтому ты обосрался.

К тому же, ты, трепло, опять путаешь жопу и палец. Си - это промышленный язык с полувековой историей. Раст - это дошколятская говноподелка.

Это как школота в интернете кукарекает «я прикрутил на свой таз вебку и поставил ноут с маздайкай - почему же автопроизводители такие тупые и не додумались сделать так же». Ахренеть, логика это явно твоё.

Ручками всё напишешь? И ещё время что бы громко пукнуть на ЛОРе останется, да? Ты у мамы умница. Я тебя, сына говна, просто перед фактом ставлю: здесь я могу так сделать, на этом языке, а сам знаешь где - не могу. Знаешь почему? Потому что сам знаешь где такого просто напросто нет!

Опять обосрался. Ты ничего не может - ты взял готовое дерьмо, сожрал его и кукарекаешь «ты не можешь так же сделать» - могу, но не хочу. То, что я могу - я тебе доказал.

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

О боже, бездарная макака. Мне ненужна твоя сериализация говна для убожества. В твоём недоязычке есть одни поды, которые никому не интересны.

Повторишь - поговорим, а то пока я вижу лишь пердёжь в лужу без фактов, писатель ты наш костылей дошкольных за пару дней.

Ты совсем, дошколятинка, поехавшая? Ты высрал мне левую говнолибу и начинаешь кукарекать «в расте можно» - ты совсем поехавший? Я тебе показал такую же либу, которая так же может.

Ты настолько тупой, что не можешь этого опнять?

NishiragiShintaro
()
Ответ на: комментарий от dear_amomynous_v2_1

Ты совсем поехавший, дошколёнок? Раст - это недоязычок, который ничего не может. И макросы в нём сделаны «инородно», несоизмеримо более, чем препроцессор.

Говномокросы раста - это отдельный говноязык с синтаксисом из 70х годов. Я даже не знал, что дошколята могут быть настолько тупыми.

NishiragiShintaro
()
Ответ на: комментарий от Deleted

Дело не в его макросах. Это поехавший дошколёнок кукарекает не это. Он кукарекает, что «в С макросы не нативные, инородные». При этом именно такой же препроцессор есть в этом говне, который выглядит в 100 раз более инородным и вообще никак не завязан на этом недоязычке.

При этом само наличие препроцессора дошколёнок называет ошибкой, но это такой же препроцессор. При этом си создавался 50 лет назад, а это говно высралось 10лет назад и состоит на 99% из ворованного сишного/крествого кода.

А вот у сишки воровать было неоткуда.

NishiragiShintaro
()
Ответ на: комментарий от NishiragiShintaro

Конечно! Мамка мне поможет завтра доказать какому-то буйному поехавшему в интернете с воспалившимся эго, что он не прав! :3

dear_amomynous_v2_1
()
Ответ на: комментарий от NishiragiShintaro

Но ты не плачь что у тебя соску отнимают, завтра я тебя и публику (Может быть) ещё повеселю ;3

dear_amomynous_v2_1
()

а мне нравится, как этот буйный ламер рассуждает тут о пользе инклюдов так, как будто в расте их нет :3

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.