Item::increment
ожидает self
по значению, оно перемещает Item
, на котором оно вызывается. Container::increment_item
берет &mut self
по ссылке, он позволяет изменять self
, но не позволяет вам вступать во владение self
(или любой из его частей). self.item.increment(amount)
, вы пытаетесь передать значение self.item
по значению, тем самым перемещая владение в функцию Item::increment
, но вам не разрешено делать это со ссылками на значения, которыми вы не владеете. Просто передайте self
в Item::increment
по изменяемой ссылке, вот для чего нужны изменяемые ссылки:
struct Item {
x: u32,
}
impl Item {
pub fn increment(&mut self, amount: u32) {
self.x += amount;
}
}
struct Container {
item: Item,
}
impl Container {
pub fn increment_item(&mut self, amount: u32) {
self.item.increment(amount);
}
}
Если вы настаиваете на том, чтобы стать владельцем Item
, тогда вы можете используйте mem::replace
:
use std::mem;
struct Item {
x: u32,
}
impl Item {
pub fn increment(self, amount: u32) -> Self {
Item { x: self.x + amount }
}
}
struct Container {
item: Item,
}
impl Container {
pub fn increment_item(&mut self, amount: u32) {
self.item = mem::replace(&mut self.item, Item { x: 0 }).increment(amount);
}
}
, но это кажется излишне сложным в этом случае.
ITA Software поисковый сервис тарифа авиакомпании. См. здесь для понимания, почему это является впечатляющим.
Посмотрите этот вопрос для списка многого коммерческого использования Lisp.
Трудно сказать, какое программное обеспечение Lisp точно большинство впечатляющее, но я добавил бы Рода Symbolics и связанное программное обеспечение к списку успехов, которые стоит упомянуть. Также не забывайте СЛИЗЬ .
Другое приложение, которое я действительно люблю, PWGL.
PWGL является визуальным языком программирования для состава компьютера, которому помогают, и синтеза звука. Это приложение LispWorks , которое доступно для Windows и Mac OS X (бесплатная загрузка). Это использует большую сложную графику (сделанный в OpenGL), например, в его усовершенствованном редакторе примечания. Это может обработать и создать звуки. Это также может использовать ввод и вывод Midi. Это идет с действительно большим количеством примеров в ее учебном руководстве. Если у Вас есть LispWorks, можно также загрузить двоичные файлы и написать собственный код с помощью него.
поддержка приложения действительно удивительна и если Вы готовы изучить его использование, это - часы забавы для компоновщика хобби и звукорежиссера хобби.
Сервер Публикации белого дома
Во время администрирования Clinton приложение Lisp использовался для информирования американских граждан о правительственных новостях. Приложение было записано в языке Common LISP и работало сверху веб-сервера HTTP CL на двух LISP-компьютерах Symbolics (позже Открыть Genera виртуальный LISP-компьютер). Это также использовало Кермек объектно-ориентированная база данных. Приложение обеспечило таксономию правительственных областей, которые могли быть запрошены с сетью или почтовым интерфейсом для публикаций. Например, граждане могли узнать то, что вице-президент Al Gore заявил о проблемах охраны окружающей среды на определенной неделе. Это было приложением, был закрыт Джорджем Бушем - младшим, когда он приходит к власти.
Обидус, Исходный Сервер Amazon Web
Это по словам Steve Yegge.
То, что в конечном счете стало покупками Yahoo!, было сделано с Lisp. См. описание
исходного автораПила-рыба была менеджером окон GNOME по умолчанию давным-давно. Теперь они принимают значение по умолчанию в Метагород, но можно все еще использовать Пилу-рыбу (также автономный), и это все еще активно разрабатывается.
Пила-рыба очень многофункциональна и настраиваема. Что Вы ожидали бы от менеджера окон LISP.
LISP-компьютеры использовались НАСА, чтобы проверить, что Шаттл запускается. Из пресс-релиза Symbolics с 1990:
"Недавно Аэронавигационный Соотечественник и администрация Пространства (НАСА) использовал технологию Symbolics высокой четкости для анализа видеоизображений HDTV запуска Исследования в режиме реального времени. Эта система высокой четкости позволила инженерам НАСА получить повтор критических систем запуска. Инженеры смогли улучшить и увеличить изображения с высоким разрешением старта, чтобы проанализировать условие и определить потенциальные проблемы с мозаиками шаттла".
Они использовали набор LISP-компьютеров со специальными платами обработки изображений.
Одно из самых впечатляющих приложений Lisp, конечно Cyc. Cyc является проектом, запущенным Doug Lenat, который пытается поместить знание здравого смысла в систему, основанную на знаниях. Не только немного, но и действительно действительно большое знание. Люди изучили много широко разных вещей, и это было замечено ограничение к программному обеспечению искусственного интеллекта для не знания чего-либо этого. Каков типичный цвет меда? Мы сидим на стуле или под стулом? Чашка нового кофе является горячей. Когда идет дождь снаружи, не идет дождь внутри. Морская вода содержит соль, но вода в водоеме не делает. Большинство птиц может полететь. Некоторые птицы не могут полететь. Удивительно, сколько из этих фактов, знают правила и люди понятий.
Cyc находится в процессе непрерывного развития с 1984, и база знаний содержит (числа с 2004), больше чем 2,5 миллиона фактов и правил. Это также содержит больше чем 150 тысяч понятий (подобный классам в ООП). Cyc разрабатывается в SubL (диалект языка Common LISP).
Знание вводится в CycL (декларативный основанный на логике язык). Специально обученные люди вводят знание. Cyc проверяет, что это новое знание не находится в конфликте с имеющимися знаниями. Это может также получить новые заключения, и можно запросить его. Для его ответов это может также генерировать объяснения. Cyc имеет также много проблемно-ориентированной реализованной эвристики.
В первые годы проект начал разрабатывать на LISP-компьютерах, но сегодня программное обеспечение является портативным и является также доступным заинтересованным студентам и исследованиям (OpenCyc и ResearchCyc).
Я особенно люблю Максимумы . Другой хороший проект, который я обнаружил относительно недавно, Nyquist.
DART. Приложение логистики, записанное в языке Common LISP для первой войны в Персидском заливе, для освобождения Кувейта от Saddam Hussein. Можно было сказать, что война запустилась, когда это приложение было готово. Разработчики работали под интенсивной нехваткой времени для позволения.
Это отдельное приложение, как говорят, заплатило для всех (!) американских правительственных инвестиций в исследование AI.
Emacs.
, По крайней мере, части его записаны в Lisp Emacs.
LISP или по крайней мере средство анализа LISP.