Size: a a a

Rust — русскоговорящее сообществo

2020 October 09

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
Определи «нельзя».
источник

(L

(((Mike Lubinets))) in Rust — русскоговорящее сообществo
Фундаментально незаменивые вещи — это интринсики и corelib местами.
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
«Можно» скомпилировать нормальную стдлибу, дизассемблировать её и положить получившееся в asm!()
источник

D

Dima in Rust — русскоговорящее сообществo
Emmanuel Goldstein
Это не поможет. Бокс — ключевой тип для компилятора. Ты не можешь реализовать свой бокс, у тебя сломается всё.
true, также как и Option
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
Раст останется тьюринг-полным и без стдлибы
источник

KR

Kai Ren in Rust — русскоговорящее сообществo
(((Mike Lubinets)))
Box можно создать без этого оператора. И ты можешь написать свой бокс, совершенно без этого оператора
А вот UnsafeCell уже нет
источник

(L

(((Mike Lubinets))) in Rust — русскоговорящее сообществo
Emmanuel Goldstein
Определи «нельзя».
Ты утверждаешь что невозможно заменить стдлиб. Приводишь в пример Box — вот я и прошу показать что такого особенного делает компилятор в этом случае, чего нельзя сделать без его билтинов?
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
(((Mike Lubinets)))
Ты утверждаешь что невозможно заменить стдлиб. Приводишь в пример Box — вот я и прошу показать что такого особенного делает компилятор в этом случае, чего нельзя сделать без его билтинов?
источник

(L

(((Mike Lubinets))) in Rust — русскоговорящее сообществo
Продолжай
источник

p

polunin.ai in Rust — русскоговорящее сообществo
(((Mike Lubinets)))
Ты утверждаешь что невозможно заменить стдлиб. Приводишь в пример Box — вот я и прошу показать что такого особенного делает компилятор в этом случае, чего нельзя сделать без его билтинов?
достаточно того, что некоторые части текущего Box уже в компиляторе.
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
Этого достаточно. Типы стдлибы обрабатываются не так же, как обычные.
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
Стдлиба — не библиотека. Она не написана как библиотека. Библиотеки не оставляют часть своей реализации компилятору.
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
(((Mike Lubinets)))
Продолжай
И, кстати, да, UnsafeCell, MaybeUninit, NonZero и ряд других вещей тупо невозможно реализовать сторонне
источник

(L

(((Mike Lubinets))) in Rust — русскоговорящее сообществo
polunin.ai
достаточно того, что некоторые части текущего Box уже в компиляторе.
Нет, недостаточно. Детали реализации Box в stdlib никак не противоречат возможности альтернативной реализации owned pointer, семантически полностью совместимой.
источник

D

Dima in Rust — русскоговорящее сообществo
(((Mike Lubinets)))
Нет, недостаточно. Детали реализации Box в stdlib никак не противоречат возможности альтернативной реализации owned pointer, семантически полностью совместимой.
ну тем не менее компиляторной магии в Box достаточно
источник

p

polunin.ai in Rust — русскоговорящее сообществo
(((Mike Lubinets)))
Нет, недостаточно. Детали реализации Box в stdlib никак не противоречат возможности альтернативной реализации owned pointer, семантически полностью совместимой.
возможность альтернативной реализации owned pointer не противоречит тезису "стдлиб - часть компилятора"
источник

(L

(((Mike Lubinets))) in Rust — русскоговорящее сообществo
Emmanuel Goldstein
И, кстати, да, UnsafeCell, MaybeUninit, NonZero и ряд других вещей тупо невозможно реализовать сторонне
Это не stdlib, это corelib
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
С тем же успехом Box — alloclib
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
Но corelib и alloclib — часть stdlib
источник

(L

(((Mike Lubinets))) in Rust — русскоговорящее сообществo
Emmanuel Goldstein
С тем же успехом Box — alloclib
Если угодно. alloclib тоже заменяема
источник