Aprenda a usar o Crux em seu projeto.
Siga o ReadMe no repositório do projeto no GitHub.
Leia a documentação da API
Assista à conversa introdutória na recente conferência Rust Nation 2023 em Londres.
Você também pode participar da conversa amigável em nosso canal Zulip.
Observe que o Crux é experimental e atualmente em desenvolvimento ativo (provavelmente ainda não está pronto para uso em aplicativos de produção). No entanto, a filial principal deve estar sempre funcionando bem, e tentaremos manter os exemplos e documentação atualizados à medida que avançamos. Acreditamos que a API já se estabeleceu, então faça uma peça! :-)
O conceito arquitetônico fundamental é a separação estrita de tarefas computacionais puras de tarefas que causam efeitos colaterais. Isso é semelhante à maneira como o Elm funciona.
No diagrama acima, o "núcleo" interno é compilado e vinculado ao "shell" externo em cada plataforma como uma biblioteca:
De fato, como o WebAssembly (WASM) é um dos alvos de compilação, o núcleo deve permanecer livre de efeito colateral, devido à natureza da caixa de areia do ambiente de tempo de execução do WASM.
Como tal, o núcleo é completamente isolado e seguro contra ataques de cadeia de suprimentos de software, pois não tem acesso a nenhuma API externa. Tudo o que pode fazer é realizar cálculos puros e manter o estado interno.
Após a arquitetura do ELM, o núcleo define os principais tipos de componentes dentro do aplicativo:
Event - um enum descrevendo os eventos que o núcleo pode lidarModel - descreve o estado interno do aplicativoViewModel - representa informações que devem ser exibidas ao usuário Os dois primeiros estão unidos pela função update , familiarizados da ELM, Redux ou outras arquiteturas de fornecimento de eventos, que atualmente possui esse tipo de assinatura:
fn update (
& self ,
event : Event ,
model : & mut Model ,
capabilities : & Capabilities ,
) O trabalho da função update é processar um Event , atualizar o modelo de acordo e solicitar potencialmente alguns efeitos colaterais usando recursos.
A plataforma de anexo "Shell" nativa é escrita usando o idioma apropriado para a plataforma e atua como o ambiente de tempo de execução no qual todas as tarefas não-puras são executadas. Da perspectiva do núcleo, o shell é a plataforma na qual o núcleo é executado.
Seguindo a arquitetura ELM, a interface com o núcleo é baseada em mensagens. Isso significa que o núcleo é incapaz de realizar qualquer outra coisa que não seja cálculos puros. Para executar qualquer tarefa que crie um efeito colateral (como uma chamada HTTP ou geração de números aleatórios), o núcleo deve solicitá-lo do shell.
O núcleo possui um conceito de capacidades-interfaces reutilizáveis para efeitos colaterais comuns-suportando a semântica de fogo e esquecimento/resposta e streaming.
A única capacidade interna é Render . Mas este repositório contém alguns recursos em vários estágios de maturidade, e você pode escrever facilmente o seu, se quiser:
Render (peça à interface do usuário para renderizar o ViewModel)-fonte, embutida para crux_core , apenas solicitaHttp (implementação HTTP completa com base na API de surf) - fonte, caixa, solicitação/respostaKeyValue (API básica de armazenamento de valor-chave)-Fonte, Crate, Solicitação/RespostaTime (obtenha o horário atual, notifique após a duração, notifique no instante) - fonte, caixa, solicitação/respostaPlatform (obtenha a plataforma atual) - fonte, caixa, solicitação/respostaSSE (Eventos básicos de envio ao servidor)-Fonte, solicitação/streamingPubSub (sub sub streaming) - fonte, solicitação/resposta/streamingTimer (Timer Iniciar, terminar, cancelar) - Fonte, solicitação/resposta/streamingDelay - parte do tutorial no livroRed Badger é a consultoria de produtos digitais confiável por chips azuis e marcas globais. Nosso design de produto e pedigree técnico nos permitem criar produtos digitais de alto impacto que os clientes desejam. Utilizamos abordagens modernas de engenharia para oferecer mudanças sustentáveis. E incorporar recursos digitais para impulsionar a inovação contínua.
O Zulip é um aplicativo de bate-papo em equipe moderno de código aberto projetado para manter conversas ao vivo e assíncronas organizadas.
O Zulip Patrocination Crux fornecendo nosso servidor Zulip - obrigado Zulip!