Описание тега ownership-semantics

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

Когда хранилище используется для ресурса, который больше не принадлежит?

В строке 2 программы ниже выделен векторный ресурс. Когда программа заканчивается, векторный ресурс не принадлежит. Если ресурс вообще не принадлежит, когда он будет восстановлен? Есть ли объяснение с использованием терминологии семантики владения R…
12 авг '15 в 02:39
1 ответ

Право собственности на QAction

При добавлении QAction* в QMenu, кто отвечает за удаление объекта QAction*? Я не смог найти это упомянутое в документации для QMenu или QAction. void MyClass::contextMenuEvent(QContextMenuEvent *evt) { QMenu menu(this); QAction *a = new QAction(tr("…
05 янв '12 в 22:36
1 ответ

Почему Option::map не становится владельцем реализации связанного списка Iterator::next?

Я пытаюсь проследить за Rust, используя слишком много связанных списков. type Link<T> = Option<Box<Node<T>>>; pub struct List<T> { head: Link<T>, } struct Node<T> { elem: T, next: Link<T>, } pub struct…
24 дек '17 в 15:21
2 ответа

Инициализация и управление shared_ptr для базового интерфейса

У меня есть несколько вопросов, связанных с использованием shared_ptr, указывающего на базовый класс. Их ответы влияют друг на друга, и для всех трех мне нужен один и тот же фрагмент кода, чтобы установить контекст настолько минимально, насколько эт…
04 дек '18 в 14:41
1 ответ

Есть ли способ избежать клонирования при преобразовании PathBuf в строку?

Мне нужно просто (и опасно - обработка ошибок опущена для краткости) получить текущее имя исполняемого файла. Я сделал это работает, но моя функция преобразует &str в String только позвонить as_str() позже для сопоставления с образцом. fn binary…
23 янв '17 в 15:30
3 ответа

Владение моим новым Unique_ptrs?

В соответствии с предложением, которое я недавно дал на собеседовании, мне посоветовали изучить функциональность unique_ptr в C++11 в качестве средства автоматического сбора мусора. Поэтому я использую старый проект и заменяю свои необработанные ука…
1 ответ

У коллекций Rust есть возможность владеть данными, которые они хранят?

Учитывая следующий код (который не компилируется): fn main() { let mut v = vec!(); { let name = "Bob the Builder".to_string(); v.push(&name); } for m in &v{ println!("{}", m); } } Я создал переменную привязку к Rust String тип, который выйде…
16 апр '16 в 04:34
12 ответов

Как мне * не * удалить участника в деструкторе?

Я бы хотел, чтобы деструктор моего класса удалил весь объект, кроме одного из членов, который был удален в другом месте. Прежде всего, это совершенно неразумно? Если это не так, как мне это сделать? Я думал, что создание деструктора с пустым телом п…
06 июл '09 в 17:30
1 ответ

Возврат ссылки на универсальный тип с характерной чертой / значением Fn

Я только начинаю изучать Rust и прорабатываю книгу Rust. Одна из глав содержит несколько примеров и заканчивается предложенным упражнением типа "попробуй сделать этот универсальный". Я полностью ударился об этом. Полуобщий тип, с которого вы начинае…
0 ответов

Термин для типов семантики? Значение / ссылка, перемещение / клонирование и т. Д.

Что такое термин для описания, если программный объект имеет семантику значения / ссылки или семантику перемещения / клонирования? Например, что такое хорошее название для этих enums? enum ReferralSemantic { Value, Reference } enum CopySemantic { Cl…
2 ответа

Семантика владения unique_ptr

Возможно, я пытался быть слишком общим. (Оригинальный вопрос ниже) Конкретно, у меня есть некоторая зависимость Dep класса Foo, У меня тоже есть класс MockDep и я определяю класс TestFoo, Вот его конструктор, который я попытался написать: TestFoo(un…
3 ответа

Умные указатели семантики владения и равенства

У меня есть пара вопросов для умных указателей, которые раньше я им не давал. Что значит владеть объектом, указывать на объект и управлять объектом в мире умных указателей? Ранее я думал, что тот, кто владеет объектом, также указывает на него и упра…
14 дек '16 в 12:59
3 ответа

Семантика перемещения в QObject::moveToThread

В документации класса QThread одна примерная установка работает так: public: Controller() { Worker *worker = new Worker; worker->moveToThread(&workerThread); //some connects to thread and worker workerThread.start(); } ~Controller() { workerT…
24 окт '17 в 15:03
2 ответа

Каков объем возвращаемого значения в Rust?

Что происходит с данными, на которые ссылается переменная, когда они возвращаются вызывающей стороне? Когда данные уничтожены и, возможно, выпала черта Drop?
27 дек '14 в 14:41
1 ответ

Невозможно переместиться из заимствованного содержимого в enum, содержащем объект в штучной упаковке, при получении PartialEq

Я пытаюсь написать вывод enum PartialEq который содержит объект черты, который делает это вручную. Я использовал решение здесь, чтобы заставить разработчиков Trait написать метод равенства. Это не в состоянии скомпилировать: trait Trait { fn partial…
17 мар '18 в 17:32
11 ответов

Умные указатели: или кто владеет тобой, детка?

C++ - все о владении памятьюАка "Собственность Семантика" Ответственность за освобождение этой памяти лежит на владельце куска динамически выделяемой памяти. Таким образом, вопрос действительно становится тем, кому принадлежит память. В C++ владение…
1 ответ

Как безопасно хранить ссылку на владельца в принадлежащем C++ объекте?

Учебный класс Owner владеет несколькими объектами класса Item с помощью unique_ptr, Я хочу объекты Item хранить ссылку (не указатель) на Owner объекты, которым они принадлежат, со следующими требованиями: Там никогда не может быть висячей ссылки. Сс…
17 июн '18 в 22:16
1 ответ

Может ли Rust использовать итератор, переданный в функцию?

Я пытаюсь реализовать простой калькулятор REPL в Rust, и я бью кирпичные стены повсюду. Я потребляю символы, перебирая жестко закодированную строку. Когда я нажимаю числовой символ, я хочу передать управление функции, которая будет использовать оста…
3 ответа

Строка клонирования в определенное время жизни

В настоящее время я пытаюсь написать небольшое приложение для командной строки на Rust, и я столкнулся со стеной со временем жизни. extern crate clap; use self::clap::{App, Arg}; use std::env; impl<'p> Params<'p> { fn get_username_arg&lt…
28 май '16 в 18:42
1 ответ

Условно переместить T из Rc<T>, когда счетчик равен 1

Есть ли способ переместить объект из Rc&lt;T&gt; когда счет 1? Я думаю о том, как можно реализовать: fn take_ownership&lt;T&gt;(shared: Rc&lt;T&gt;) -&gt; Result&lt;T, Rc&lt;T&gt;&gt; { ... } Семантика будет то, что вы получите T если счет 1 и ты ве…