Подскажите, всё никак не могу побороть borrow checker: https://ibb.co/xf45whD Сама структура: struct PManager

{
db_pass: String,
db_name: String,
db: Option<db::DB>,
}
Чтобы исправить эту проблему нужно хранить не само значение DB, а ссылку на него? Я правильно понимаю?

17 ответов

11 просмотров

Нет

странно, что db::DB::open принимает значения, а не ссылки

mrvyhomk- Автор вопроса
Алиса Королёва
странно, что db::DB::open принимает значения, а не...

Я просто плохо умею со ссылками работать, а точнее с их временем жизни. Вот сам модуль db, уже изменённый для работы со ссылками: https://ibb.co/5K3rsKW

mrvyhomk
Я просто плохо умею со ссылками работать, а точнее...

Имхо, на password лучше не держать ссылку, а хранить у себя

mrvyhomk
Чем лучше?

Меньше возни с лайфтаймами во всем остальном коде ценой одной аллокации (а может даже вообще бесплатно)

mrvyhomk- Автор вопроса
Mikail Bagishov
Меньше возни с лайфтаймами во всем остальном коде ...

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

mrvyhomk
Я просто плохо умею со ссылками работать, а точнее...

File::open принимает AsRef<Path>, ни к чему там клон тип &String нужен довольно редко, практически всегда достаточно &str я правильно понимаю, что name - это имя файла? тогда ему лучше дать тип не &String или &str, а &Path или AsRef<Path>

mrvyhomk- Автор вопроса
Алиса Королёва
File::open принимает AsRef<Path>, ни к чему там кл...

Изменил на &str где нуждно. Осталась последняя ошибка, но не могу понять с чем связана? https://ibb.co/yW3d7XJ

mrvyhomk
Изменил на &str где нуждно. Осталась последняя оши...

Хм, тут вроде надо &'a db_name UPD: таки &'a а не &'_

mrvyhomk- Автор вопроса
Mikail Bagishov
Хм, тут вроде надо &'a db_name UPD: таки &'a а не ...

Где именно? В создании обьекта PManager?

mrvyhomk
Я просто плохо умею со ссылками работать, а точнее...

Первое время можно хранить просто по значению, а где требует именно ссылка, юзать Rc<RefCell>. Потом со временем можно и с ссылками и временем жизни освоится

mrvyhomk
Я просто плохо умею со ссылками работать, а точнее...

Ну ошибка же явно пишет что хочет понять как долго живет DB. Надо просто поменять сигнатуру функции

mrvyhomk- Автор вопроса
Алишер Галиев
Ну ошибка же явно пишет что хочет понять как долго...

Я поправил уже код, но теперь при возврате pm из new() ошибка used moved value pm.db

mrvyhomk
Я поправил уже код, но теперь при возврате pm из n...

ты исправил ошибку с unwrap-ом, на которую я указывал?

mrvyhomk- Автор вопроса
Mikail Bagishov
ты исправил ошибку с unwrap-ом, на которую я указы...

Вот про это, кстати, забыл. Сейчас поправлю.

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

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

Подскажите где можно прочитать про реализацию возможности писать человеку при подписке на телеграм канал от имени бота? Было бы не плохо если для Telegraf@3.38.0
Pan Lipton
10
а что делать если тебя убивают на картах?
Yarik yarik kyda ti lezesh
43
Мне вот что интересно, кто на рфе стартовал/играл, что вы фармили, в каком виде контента он прямо хорош? Экспедиция? Вроде прямо на замазанных мапах рф сдувается
Владислав
20
Кто нибудь поясните это всё таки вброс или да? Про санктум слышал на поедб вбросили, а по дурке откуда инфа и на сколько это вообще правда? Пахнет шизофренией какой-то ✅Divi...
Dmitry Ritter
9
салют мужики, как я могу менеджмить юзеров в канале с помощью тг бота? Мне нужно уметь ботом получать список юзеров в канале и удалять их, как я могу это сделать ? ( gram, tel...
Kokni
1
У вас бывает ощущение, что хочется потратить весь отпуск на то, чтоб только спать?
Николай
15
‌/r/pathofexile moderation changes top scoring links : pathofexile (RSS) Hi, everyone. On behalf of the subreddit mod team, I’m here to give you a few updates on the subreddi...
Esionru
3
Как можно настроить фильтр в пое под себя?
Yarik yarik kyda ti lezesh
15
У меня вопрос к знающими, стоит ли вступать в гильдии в игре или лучше полная свобода?
Енот Полоскун
17
Ребят, есть какие нибудь мили билды, способные в шмотках с пола закрывать атлас?
Ninja Obormot
12
Карта сайта