Узнайте, как использовать суть в вашем проекте.
Следуйте Readme в репозитории проекта на GitHub.
Прочитайте документацию API
Посмотрите вступительный разговор на недавней конференции Rust Nation 2023 в Лондоне.
Вы также можете присоединиться к дружескому разговору на нашем канале Zulip.
Обратите внимание, что Crux экспериментально и в настоящее время находится в активной разработке (вероятно, пока не готова к использованию в производственных приложениях). Тем не менее, главная филиала всегда должна работать хорошо, и мы постараемся поддерживать примеры и документацию в курсе по мере продвижения. Мы думаем , что API теперь урегулировал, так что играйте! :-)
Фундаментальная архитектурная концепция - это строгое отделение чистых вычислительных задач от задач, которые вызывают побочные эффекты. Это похоже на то, как работает ELM.
На приведенной выше диаграмме внутреннее «ядро» составлено и связано с внешней «оболочкой» на каждой платформе в качестве библиотеки:
Фактически, поскольку Webassembly (WASM) является одной из целей компиляции, ядро должно оставаться без побочного эффекта из-за характера среды выполнения WASM.
Таким образом, ядро полностью изолировано и безопасно от атак программного обеспечения цепочки поставок, поскольку у него нет доступа к каким-либо внешним API. Все, что он может сделать, это выполнить чистые расчеты и сохранить внутреннее состояние.
Следуя архитектуре ELM, ядро определяет типы ключевых компонентов в приложении:
Event - enum описывающий события, с которыми может справиться ядроModel - описывает внутреннее состояние приложенияViewModel - представляет информацию, которая должна отображаться пользователю Первые два связаны вместе с функцией update , знакомые с ELM, Redux или других архитектур, которые в настоящее время имеют подпись этого типа:
fn update (
& self ,
event : Event ,
model : & mut Model ,
capabilities : & Capabilities ,
) Задача функции update состоит в том, чтобы обработать Event , соответствующим образом обновить модель и потенциально запросить некоторые побочные эффекты, используя возможности.
Нативная платформа в приложении написана с использованием языка, подходящего для платформы, и выступает в качестве среды выполнения, в которой выполняются все задачи, не относящиеся к числу, выполняются. С точки зрения ядра, оболочка - это платформа, на которой работает ядро.
Следуя архитектуре ELM, интерфейс с ядром основан на сообщении. Это означает, что ядро не может выполнить что -либо, кроме чистых расчетов. Чтобы выполнить любую задачу, которая создает побочный эффект (например, HTTP-вызов или генерация случайных чисел), ядро должно запросить его из оболочки.
Ядро имеет концепцию возможностей-многоразовые интерфейсы для общих побочных эффектов-поддержка огневой и жесткости, запроса/ответа и семантики потоковой передачи.
Единственная встроенная способность- Render . Но этот репозиторий содержит несколько возможностей на различных этапах зрелости, и вы можете легко написать свой собственный, если хотите:
Render (Попросите пользовательский интерфейс рендеринг ViewModel)-источник, встроенный в crux_core , только запросHttp (полная реализация HTTP на основе API Surf) - источник, ящик, запрос/ответKeyValue (API базового магазина ключевых значений)-источник, ящик, запрос/ответTime (Получите текущее время, уведомляйте после продолжительности, уведомляйте в мгновенный) - источник, ящик, запрос/ответPlatform (Получить текущую платформу) - источник, ящик, запрос/ответSSE (базовые события SERVER-ST)-Источник, запрос/потоковая передачаPubSub (Pub Sub с потоковой передачей) - источник, запрос/ответ/потоковая передачаTimer (начало таймера, отделка, отмена) - источник, запрос/ответ/потоковая передачаDelay - часть учебника в книгеRed Badger - это цифровой консультации по продукту, доверяя Blue Chips и Global Brands. Наш дизайн продукта и техническая родословная позволяют нам создавать высокоэффективные цифровые продукты, которые хотят клиенты. Мы используем современные инженерные подходы для обеспечения устойчивых изменений. И внедряют цифровые возможности для постоянного инноваций.
Zulip-это приложение современного командного чата с открытым исходным кодом, предназначенное для обеспечения организованных как живых, так и асинхронных разговоров.
Спонсор ZULIP Srux, предоставив наш сервер ZULIP - спасибо, Zulip!