jpkriger /
IC-repository
Repositório de desenvolvimento para banca de IC. Aqui vai ficar os casos de estudos de ataque e defesa de sqlinjections e xss na linguagem rust
28/100 healthLoading repository data…
rodrigofurlaneti / repository
Repositorio de estudos de Rust, criado a partir de um plano intensivo voltado para um desenvolvedor senior com background em C#/.NET, DDD, Clean Architecture e SOLID. O objetivo e aprender Rust aplicando, desde o inicio, os mesmos padroes de arquitetura ja dominados em .NET, comparando cada conceito novo com seu equivalente.
A transparent discovery signal based on current public GitHub metadata.
This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
Repositorio de estudos de Rust, criado a partir de um plano intensivo voltado para um desenvolvedor senior com background em C#/.NET, DDD, Clean Architecture e SOLID. O objetivo e aprender Rust aplicando, desde o inicio, os mesmos padroes de arquitetura ja dominados em .NET, comparando cada conceito novo com seu equivalente (ou ausencia de equivalente) no mundo C#.
Cada semana tem sua propria pasta, com um ou mais projetos Cargo independentes. Os projetos evoluem de forma incremental: o dominio criado na Semana 2 e reaproveitado nas Semanas 4, 5 e 6. A partir da Semana 1 e da Semana 2, foram adicionados exemplos extras para reforcar conceitos especificos.
rustup (perfil padrao, toolchain stable, target x86_64-pc-windows-msvc). Inclui rustc, cargo, clippy e rustfmt.wasm32-unknown-unknown (via rustup target add), usado na Semana 5.cargo install wasm-pack).cargo install basic-http-server).cargo/rustc nao forem reconhecidos, feche e reabra o Visual Studio (ou ajuste o PATH manualmente na sessao com $env:Path += ";$env:USERPROFILE\.cargo\bin")..rs com acentuacao (ex.: "nao", "e") devem ser salvos como UTF-8 sem assinatura no Visual Studio (Salvar Como > Salvar com Codificacao). Por simplicidade, o codigo deste repositorio evita acentos em comentarios e mensagens de erro para nao depender desse ajuste.basic-http-server) bloqueiam o terminal enquanto rodam — use uma segunda janela do PowerShell para testar endpoints com Invoke-RestMethod ou o navegador.LearnRust/
├── semana-01-fundamentos/
│ ├── conversor-unidades/ # binario — ownership, borrowing, lifetimes, Result/Option
│ ├── validador-senha/ # binario — enums, Vec, acumulo de erros
│ ├── carrinho-compras/ # binario — &mut self, Option<&T>
│ ├── conta-bancaria/ # binario — encapsulamento, Result custom
│ ├── processador-notas/ # binario — slices, iterators (map/filter/fold)
│ ├── classificador-idade/ # binario — match com ranges e guards
│ └── calculadora-closures/ # binario — closures, impl Fn
├── semana-02-arquitetura/
│ ├── Cargo.toml # workspace
│ ├── dominio-pedidos/ # lib — dominio puro (Pedido, ItemPedido, trait Repository)
│ ├── infraestrutura/ # lib — RepositorioEmMemoria (implementacao concreta)
│ ├── dominio-clientes/ # lib — Cliente, Value Objects, Repository generico<T>
│ ├── dominio-vendas/ # lib — Domain Service PoliticaCredito
│ └── aplicacao-pedidos/ # lib — casos de uso (Application layer)
├── semana-03-concorrencia/
│ └── worker-pedidos/ # binario — threads, Tokio, thiserror/anyhow
├── semana-04-backend/
│ ├── api/ # binario — Axum + SQLx + tracing
│ └── cli/ # binario — clap (administrativo)
├── semana-05-wasm/
│ └── pedido-wasm/ # lib (cdylib) — compilado para WASM
├── semana-06-ia-agentes/
│ └── agente-pedidos/ # binario — agente de IA com Rig (em andamento)
└── semana-07-tipos-traits/
├── adts-pessoa/ \# binario — Algebraic Data Types (enum \+ composicao)
├── polimorfismo-formas/ \# binario — static dispatch vs dyn Trait
├── operadores-vetor2d/ \# binario — std::ops::Add, PartialEq, Display
└── smart-pointers-arvore/ \# binario — Box\<T\> e Rc\<T\>
Conceitos centrais: sintaxe basica, structs, enums com dados associados, pattern matching exaustivo (match), ownership e move semantics, borrowing (&, &mut), lifetimes explicitos ('a), e tratamento de erros com Option/Result (sem null, sem excecoes).
Paralelo com C#: ownership substitui o Garbage Collector por verificacao em tempo de compilacao; Result<T, E> substitui excecoes para erros esperados; enum em Rust e muito mais proximo de union types do que o enum do C#.
| Projeto | Foco especifico | Como rodar |
|---|---|---|
conversor-unidades | ownership, borrowing, lifetimes ('a), Result<f64, String> | cd semana-01-fundamentos\conversor-unidades && cargo run |
validador-senha | enums de erro, Vec, acumulo de multiplos erros em vez de parar no primeiro | cd semana-01-fundamentos\validador-senha && cargo run |
carrinho-compras | metodos &mut self (escrita) vs &self (leitura), Option<&T> emprestado de dentro de uma struct | cd semana-01-fundamentos\carrinho-compras && cargo run |
conta-bancaria | encapsulamento (campo privado + metodos), Result customizado para regras de negocio | cd semana-01-fundamentos\conta-bancaria && cargo run |
processador-notas | slices (&[f64]), cadeia de iterators (filter/map/collect) — equivalente ao LINQ | cd semana-01-fundamentos\processador-notas && cargo run |
classificador-idade | match com ranges (0..=12) e guards (if idade >= 60) | cd semana-01-fundamentos\classificador-idade && cargo run |
calculadora-closures | closures como parametro (impl Fn(f64, f64) -> f64), captura de variavel do ambiente — equivalente a Func<T,TResult> | cd semana-01-fundamentos\calculadora-closures && cargo run |
Workspace semana-02-arquitetura com cinco crates, representando as camadas de um Clean Architecture:
dominio-pedidos (lib): dominio puro — ItemPedido e Pedido (Value Objects e Aggregate Root com invariantes garantidas por smart constructors), e o trait PedidoRepository (a porta/interface).infraestrutura (lib): implementacao concreta RepositorioEmMemoria, que depende de dominio-pedidos via path dependency.dominio-clientes (lib): Cliente, Value Objects Email/Cpf (newtype com smart constructor), e um Repository generico Repositorio<T>/RepositorioEmMemoria<T> reutilizavel para qualquer entidade, sem duplicar codigo (generics resolvidos por monomorphization).dominio-vendas (lib): PoliticaCredito, um Domain Service que coordena Cliente e Pedido sem pertencer a nenhum dos dois — depende das outras duas crates de dominio, mas nenhuma delas depende de volta.aplicacao-pedidos (lib): a camada Application — CriarPedidoCasoDeUso/ListarPedidosCasoDeUso, que dependem apenas do trait PedidoRepository (nunca da infraestrutura concreta), permitindo testar com um repositorio falso (RepositorioFalso) sem mock library.Conceitos aplicados: traits (contratos sem heranca de implementacao), generics vs trait objects (dyn Trait), padrao newtype para Value Objects, Aggregate Root com invariantes, Repository como trait (generico e especifico), Domain Service, camada Application desacoplada da infraestrutura, organizacao em workspace/crates por camada — a mesma separacao de projetos .csproj do Clean Architecture, mas com a direcao da dependencia garantida pelo compilador, nao so por convencao.
Testes (#[test], equivalente ao [Fact] do xUnit) cobrem validacao de Value Objects, calculo de totais do Aggregate, a politica de credito e os casos de uso da Application.
Como rodar (testa todas as crates do workspace de uma vez):
cd semana-02-arquitetura
cargo test
Projeto: semana-03-concorrencia/worker-pedidos (executavel)
Conceitos aplicados: threads nativas com Arc<Mutex<T>> para estado compartilhado seguro (verificado em compile-time via Send/Sync); programacao assincrona com Tokio (#[tokio::main], tokio::spawn, canais mpsc); tratamento de erros em escala com thiserror (erros tipados) e anyhow (propagacao na camada de aplicacao); testes assincronos com #[tokio::test].
Paralelo com C#: Arc<Mutex<T>> ~ lock/Monitor, mas com a exclusividade garantida pelo compilador; async/await tem sintaxe quase identica, mas uma Future em Rust e "preguicosa" e so executa dentro de um runtime (Tokio), diferente de uma Task do C# que ja inicia "quente".
Como rodar:
cd semana-03-concorrencia\worker-pedidos
cargo test
Projetos: semana-04-backend/api (Axum) e semana-04-backend/cli (clap), ambos consumindo dominio-pedidos e infraestrutura da Semana 2 via path dependency.
api: servidor REST com Axum, rotas POST /pedidos (cria pedido, valida via smart constructors do dominio) e GET /pedidos (lista em memoria via RepositorioEmMemoria); persistencia adicional em SQLite via SQLx (GET /pedidos/historico); observabilidade estruturada com tracing/tracing-subscriber. Estado compartilhado via Arc<Mutex<RepositorioEmMemoria>> (mesmo padrao da Semana 3).
cli: ferramenta administrativa com clap (subcomandos seed e relatorio), que le/escreve no mesmo arquivo SQLite usado pela API (pedidos.db), demonstrando dois processos independentes compartilhando persistencia.
Paralelo com C#: Axum ~ Minimal APIs do ASP.NET Core; SQLx (modo sem macro) ~ Dapper; tracing ~ Serilog; criar_pedido/listar_pedidos ja seguem CQRS na pratica (commands vs queries), sem precisar de um dispatcher tipo MediatR.
Como rodar a API:
cd semana-04-backend\api
cargo run
Em outro terminal, testar:
Invoke-RestMethod -Uri http://127.0.0.1:3000/pedidos -Method Post -Body '{"itens":[{"produto":"Mouse","quantidade":2,"preco_unitario":50.0}]}' -ContentType "application/json"
Invoke-RestMethod -Uri http://127.0.0.1:3000/pedidos/historico -Method Get
Como rodar a CLI (com a API parada ou rodando, ambas compartilham o banco):
cd semana-04-backend\cli
cargo run -- seed --quantidade 2
cargo run -- relatorio
Projeto: semana-05-wasm/pedido-wasm (lib cdylib), tambem dependente de dominio-pedidos.
Uma crate adaptadora fina expoe calcular_total_pedido via wasm-bindgen, sem acoplar o dominio puro a tecnologia de WASM (mesmo principio de Anti-Corruption Layer usado nos DTOs da API). Compilado com wasm-pack build --target web, gerando a pasta pkg/ (ignorada no git, e artefato de build). Consumido por uma pagina index.html simples via modulo ES, servida localmente com basic-http-server.
Como rodar:
cd semana-05-wasm\pedido-wasm
wasm-pack build --target web
basic-http-server .
Depois, abrir http://127.0.0.1:4000 no navegador.
Projeto: semana-06-ia-agentes/agente-pedidos (executavel, em andamento)
Uso do framework Rig (rig-core) para orquestracao de LLM, com o provedor Anthropic (Claude). Requer a variavel de ambiente ANTHROPIC_API_KEY (chave gerada em console.anthropic.com; contas novas recebem cerca de US$ 5 em creditos gratuitos, sem necessidade de cartao, apenas verificacao de celular por SMS).
Objetivo final do capstone: um agente que expoe uma tool customizada (usando o dominio Pedido da Semana 2), integrando os quatro focos do curso (Backend, Sistemas, IA e, opcionalmente, WASM).
Como rodar:
$env:ANTHROPIC_API_KEY = "sk-ant-sua-chave-aqui"
cd semana-06-ia-agentes\agente-pedidos
cargo run
Modulo criado para aprofu
Selected from shared topics, language and repository description—not editorial ratings.
jpkriger /
Repositório de desenvolvimento para banca de IC. Aqui vai ficar os casos de estudos de ataque e defesa de sqlinjections e xss na linguagem rust
28/100 healthsnake-outerheaven /
Repositório de estudos rust
44/100 healthCleuJunior /
Repositorio com Estudos de Rust
27/100 health4rt3mis4D4 /
Repositório de estudos e projetos de Segurança e Criptografia em Rust, abordando fundamentos como segurança em profundidade e LGPD, além de implementações práticas com JWT, Base64, hashing, autenticação de conteúdo, criptografia simétrica e assimétrica, segurança em WebSockets/Webhooks e técnicas de tunelamento.
49/100 healthmarcusteixeirabr /
Repositório para meus projetos de estudos de rust
44/100 healthWeslleyqueiroz /
Repositório onde vai conter exercicios/estudos de rust
27/100 health