Насколько странно принимать в функцию &Rc<T> в случаях, когда с

какой-то вероятностью я не буду её клонировать? Точнее есть ли профит/никогда в жизни не замечу разницы сколько раз бы не делал так/иначе?

15 ответов

18 просмотров

Клонирование Rc — это просто инкрементация (даже не атомарная) счётчика. Как часто ты избегаешь лишних инкрементаций переменных?

А какой смысл в &Rc ?

Вот принимать Arc по ссылке в подобных ситуациях имеет чуть больше смысла

Alexander-Ruliov Автор вопроса
Alexey Ermakov
А какой смысл в &Rc ?

Например, у меня хешмапа есть, в которой я хочу по значению внутри Rc найти ключ, а если его там нет — то создать значение. Но с большой вероятностью он там есть и инкрементить счётчик мне не нужно.

Nuxs🏴‍☠️
а какой смысл?

Ровно по тем же причинам, по которым ты написал(а?). Атомарный инкремент, как правило, дороже обычного, да и убрать лишние модификации компилятор реже может

Alexey Ermakov
А какой смысл в &Rc ?

боровить и мутить(мут версия) то, что нельзя боровить и мутить по версии борров чекера. но.. в случае чего в реалтайме словить ошибку. как минимум

Alexander-Ruliov Автор вопроса
Alexey Ermakov
А можно пример псевдокодом? Я не понял

pub fn named_var_or_create(&mut self, name: &Rc<str>) -> Result<VarPointer, InterpreterError> { let Some(vars) = self.named_vars.get_mut(name) else { let ptr = self.persist_var(VarDef::unknown()); self.named_vars.insert(name.clone(), vec![ptr]); return Ok(ptr); };

Alexander-Ruliov Автор вопроса

У меня ключи Rc<str> в хештаблице.

Alexander Ruliov
У меня ключи Rc<str> в хештаблице.

Так можно же &str извлечь тогда из указателя через borrow

Alexander Ruliov
pub fn named_var_or_create(&mut self, name: &R...

ты можешь просто &str принимать в функции

Похожие вопросы

Обсуждают сегодня

Всем привет. Ребята, подскажите, пожалуйста. у ботов есть ограничение на отправку сообщений - 30 сообщений в секунду, эти ограничения накладываются на все сообщения? или на со...
Artem Stormageddon
4
Блин, ребята, сори за тупые вопросы. А можно ли как-то открыть вебапку по нажатию на кнопку в меню(которое появляется слева, команды)?
Artem Stormageddon
3
Ребята, всем привет. Подскажите, пожалуйста, можно ли как-то через бота понять, что этого бота добавили в группу\канал и выдали ему права администратора?
Artem Stormageddon
9
Привет всем! Почему этот код не срабатывает при добавлении или удалении пользователя из чата? bot.on('chat_member', async (ctx) => { console.log(ctx); }) bot.launch({allo...
Alexander
7
Всем привет. Не понимаю, в чём тут шутка юмора. Убирается только разрешение на send_messages. А send_media_messages остаётся. Как сделать, чтобы оба убирались? await b...
Alexander
2
Есть тут кто занимается разработкой серваков майна? Или знакомые
meow *
3
'frakturBold' => ['𝖆', '𝖇', '𝖈', '𝖉', '𝖊', '𝖋', '𝖌', '𝖍', '𝖎', '𝖏', '𝖐', '𝖑', '𝖒', '𝖓', '𝖔', '𝖕', '𝖖', '𝖗', '𝖘', '𝖙', '𝖚', '𝖛', '𝖜', '𝖝', '𝖞', '𝖟', '𝕬', '𝕭', '𝕮', '𝕯'...
Roma
4
Есть ли лимиты на кол-во вебхук по домену? Стоит в данный момент 900+ ботов и бывает бот перестает отвечать (не приходят вебхуки) 🐒 Помогает только перезапуск
ᅠ [ Кому не ответил, дублируйте ]
11
а что делать если тебя убивают на картах?
Yarik yarik kyda ti lezesh
43
Товарищи, здравствуйте Подскажите, пожалуйста, может кто-нибудь сталкивался с такой задачей Через вебапку можно сканировать qr-код, а есть ли возможность считывать nfc?
Artem Stormageddon
8
Карта сайта