У меня возникала пару раз ситуация, когда однозначность `dyn Trait` избавила бы от необходимости уточнять, что именно имелось ввиду в коде. Но насколько оправдано использование дополнительного слова во всех случаях использования типажей-объектов — практика и время покажут.
Язык должен жить и развиваться :) Если в сотый раз новые люди наталкиваются на одни и те же проблемы с синтаксисом, и в сотый раз нужно одно и то же рассказывать им о нем — то вообще, это может свидетельствовать о недостаточной организованности и канализированности данной темы. А если она уже канализирована — то пусть в своем канале она и обсуждается, глядишь, со временем может что еще новенькое родится там. Это — нормально.
Это происходит потому, что impl Trait определяет анонимизированный тип. То есть он скрывает имя реально используемого типа, а не позволяет использовать множество разных типов в этом месте, как делают переменные типа <T: Trait> статически или Box<Trait> динамически. Вот пример:
fn foo<T: Clone>(a: &T) -> T {
a.clone()
}
fn bar(a: &impl Clone) -> impl Clone {
a.clone()
}
fn main() {
let a: f32 = foo(&2.5); // Ok
let b: i32 = foo(&5); // Ok
let c: i32 = bar(&5); // Error: expected i32, found anonymized type
}
В случае с функцией bar мы лишили результирующий тип имени и как бы урезали его до возможностей типажа Clone. Но не более: никакой возможности использовать разные типы в этом месте, как у foo, мы не получили.
А насчет [0..256), то это выглядит хорошо только для простейшего случая с константами. А если границы будут определяться сложнее? Разные виды скобок будут плохо восприниматься не только парсером, но и человеком. Более того, придется все время искать правую границу выражения, чтобы по скобке определить тип диапазона. Тогда как с синтаксисом ..= тип диапазона виден сразу.
Но соглашусь, что ..= тоже не идеален, особенно в паттернах if let:
if let 1..=5 = a {
// тело
}
Но пока это лучшее, до чего договорилось сообщество. Если у вас есть альтернативные идеи — то добро пожаловать на GitHub, вы всегда можете высказать свое предложение в соответствующем issue :)
Вообще-то абсолютное большинство населения в современном обществе работает по-найму и создает какие-то ценности в составе совокупного рабочего того или иного предприятия.
Для того, чтобы форк был принят всеми как основная ветвь, это должно быть нужно и выгодно всем участникам сети. Если следовать этому форку будет только небольшая группа участников — основной ветви, которую продолжает поддерживать основная масса, это "материнской" валюте — как слону дробинка.
Вы правы, потому я и написал, что форк — это способ защиты общественной монополии. В нише останется та ветка, которую поддержит большинство.
Если у меня на кошельке было 100500 монет, у моего брата — тоже 100500, у кума/свата/соседа — по 9000, и тут кто-то хочет запустить форк, в котором у нас будет по нулям — с чего нам его принимать?
Вы можете его не принять. Но если его приняли все остальные, то вам придется с этим считаться, если вы хотите продолжать участвовать в общей для всех сети обмена. Это — диктат большинства.
Если IOTA — не для людей, то зачем она вам, как человеку? Или мне? Или она все-таки для людей?
Про IOTA я знаю, и относительно ее проблем тоже в курсе. А вам — рекомендую почитать, а то еще прогорите: telegra.ph/Pochemu-IOTA-mozhet-byt-skamom-10-01
Верно. Государство вынуждено выполнять общественно-полезные функции в той мере, в какой общество готово практически терпеть это государство. Проблема только в том, что дезорганизованное большинство значительно слабее организованного меньшинства, в руках которого государство. А это значит, что через государство это сильное меньшинство будет навязывать в большей степени свою волю всем остальным, чем остальные — ему. Конечно, стараясь не доводить ситуацию до предела (не загоняя кошку в угол).
Крупные собственники и монополии сильнее и организованнее суммы рядовых индивидуальных участников рынка, соединенных лишь стихией товарного обмена. Крупный индивидуальный участник обмена способен сконцентрировать больше ресурсов в своих руках и от его решений, куда он эти ресурсы направит, будут зависеть судьбы множества мелких индивидуальных участников обмена, которые по-отдельности не могут никак на них повлиять. А сознательно действовать вместе они тоже не могут, ибо соединены между собой только бессознательной стихией обмена, и оттого дезорганизованы.
Но информационные технологии вообще и возможность сознательного принятия решений относительно правил сети обмена на их базе в частности, способствуют действительной организации большинства в обществе.
Интересы общества должно обслуживать само общество, но для этого оно должно быть организованно. Пока общество организовано неравномерно: существующие в нем институты — это институты организованного меньшинства, которое использует их для управления остальными дезорганизованными массами преимущественно в собственных интересах этого меньшинства.
Криптовалюты — окончательно проблему не решают, но они способны продвинуть организацию общества для себя самого, так как они позволяют большинству устанавливать правила обмена и потенциально — коллективно распоряжаться любой собственность, которая проходит через эти правила.
Старые методы управления рынком могут применяться только самыми сильными участниками рынка. Которые владеют информацией о происходящем в среде обмена и которые имеют достаточную экономическую силу, чтобы влиять на ход сделок. Потому что старый обмен и его правила складывались стихийно, и каждый отдельный маленький участник видит и влияет только на малую часть рынка. Значит чтобы влиять на большую часть, нужно самому быть большим и сильным.
Криптовалюты же предполагают, что каждый участник сети обмена владеет всей информацией обо всех операциях и счетах в сети, а правила обмена устанавливаются совокупным выбором большинства участников того или иного ПО для осуществления обмена и той или иной версии данных. Принципиальная разница в том, что теперь каждый участник владеет всей сетью индивидуально и, одновременно, в равной степени сообща со всеми. Это значит, что общее выстраивается как результат выбора большинства, а не сильнейшего экономически меньшинства.
Речь тут именно об установлении самих общих правил обмена, а не о попытках схитрить в рамках установленных правил, от чего сеть защищается алгоритмами консенсуса.
Вот дельное замечание. А позиция некоторых, дескать "автор сам дурак и нечего тут рассуждать" — неконструктивна.
Сейчас в Rust (с версии 1.26) можно записать так:
…
vs..=
for inclusive rangesОднако в позиции аргумента
impl Trait
ведет себя по-другому, а именно — как универсальный тип. Поэтому такой код корректен:Хотя результирующие типы для
d
иe
мы указать не можем.Это происходит потому, что
impl Trait
определяет анонимизированный тип. То есть он скрывает имя реально используемого типа, а не позволяет использовать множество разных типов в этом месте, как делают переменные типа<T: Trait>
статически илиBox<Trait>
динамически. Вот пример:https://play.rust-lang.org/?gist=c0adf6c27c0554d11e3f172cdce32bc7&version=stable&mode=debug
В случае с функцией
bar
мы лишили результирующий тип имени и как бы урезали его до возможностей типажаClone
. Но не более: никакой возможности использовать разные типы в этом месте, как уfoo
, мы не получили.В будущем
...
в паттернах также заменят на..=
. Сейчас уже работает эта конструкция как псевдоним: https://github.com/rust-lang/rust/issues/28237А насчет
[0..256)
, то это выглядит хорошо только для простейшего случая с константами. А если границы будут определяться сложнее? Разные виды скобок будут плохо восприниматься не только парсером, но и человеком. Более того, придется все время искать правую границу выражения, чтобы по скобке определить тип диапазона. Тогда как с синтаксисом..=
тип диапазона виден сразу.Но соглашусь, что
..=
тоже не идеален, особенно в паттернахif let
:Но пока это лучшее, до чего договорилось сообщество. Если у вас есть альтернативные идеи — то добро пожаловать на GitHub, вы всегда можете высказать свое предложение в соответствующем issue :)
Вообще-то абсолютное большинство населения в современном обществе работает по-найму и создает какие-то ценности в составе совокупного рабочего того или иного предприятия.
Вы правы, потому я и написал, что форк — это способ защиты общественной монополии. В нише останется та ветка, которую поддержит большинство.
Вы можете его не принять. Но если его приняли все остальные, то вам придется с этим считаться, если вы хотите продолжать участвовать в общей для всех сети обмена. Это — диктат большинства.
Про IOTA я знаю, и относительно ее проблем тоже в курсе. А вам — рекомендую почитать, а то еще прогорите: telegra.ph/Pochemu-IOTA-mozhet-byt-skamom-10-01
Крупные собственники и монополии сильнее и организованнее суммы рядовых индивидуальных участников рынка, соединенных лишь стихией товарного обмена. Крупный индивидуальный участник обмена способен сконцентрировать больше ресурсов в своих руках и от его решений, куда он эти ресурсы направит, будут зависеть судьбы множества мелких индивидуальных участников обмена, которые по-отдельности не могут никак на них повлиять. А сознательно действовать вместе они тоже не могут, ибо соединены между собой только бессознательной стихией обмена, и оттого дезорганизованы.
Но информационные технологии вообще и возможность сознательного принятия решений относительно правил сети обмена на их базе в частности, способствуют действительной организации большинства в обществе.
Криптовалюты — окончательно проблему не решают, но они способны продвинуть организацию общества для себя самого, так как они позволяют большинству устанавливать правила обмена и потенциально — коллективно распоряжаться любой собственность, которая проходит через эти правила.
Криптовалюты же предполагают, что каждый участник сети обмена владеет всей информацией обо всех операциях и счетах в сети, а правила обмена устанавливаются совокупным выбором большинства участников того или иного ПО для осуществления обмена и той или иной версии данных. Принципиальная разница в том, что теперь каждый участник владеет всей сетью индивидуально и, одновременно, в равной степени сообща со всеми. Это значит, что общее выстраивается как результат выбора большинства, а не сильнейшего экономически меньшинства.
Речь тут именно об установлении самих общих правил обмена, а не о попытках схитрить в рамках установленных правил, от чего сеть защищается алгоритмами консенсуса.
А вот еще посмотрите: steemit.com/steem/@blockchained/dokazatelstvo-blagogo-upravleniya-daniel-larimer
Я считаю — это движение в этом же направлении усиления общественного контроля, хотя Даниэль и пытается это выставить как защиту частной собственности.