error[E0308]: mismatched types --> main.rs:6:27 | 6 | println!("{:?}", add(1, '1')); | ^^^ expected usize, found char error: aborting due to previous error For more information about this error, try `rustc --explain E0308`. error: Could not compile `rubyconfbr2019`. To learn more, run the command again with --verbose.
to run on Ruby 3. • Level 1: No signatures. Reports possible bugs. • May report false positives. • Level 2: requires signatures. Verifies that code complies with signatures. • Steep. • Sorbet. • RDL.
runtime in development only) • Scalable: 100k LoC/second. 100x faster than rubocop. • It leverages Language Server Protocol so you can put it in your IDE. • 6 month private beta @ Shopify.
was the invention of the null reference in 1965. This has led to innumerable errors, vulnerabilities, and system crashes, which have probably caused a billion dollars of pain and damage in the last forty years." -- QCon London, 2009
are used, not when they are returned. • It litters your code with null checks everywhere, disguised as .to_s, .to_i, .to_f, etc. • Modern languages like Rust don't have null by design. • C# introduced Nullable Reference Types, a stricter way of dealing with nulls.
find implicit concepts and code smells in your code. • Making these concepts explicit and fixing these smells is more important than adding type annotations.