I just observed for the first time that I could create Options with .into() instead of wrapping in Some(). Are there any downsides to this approach?
T.into() vs Some(x) are there any detriments of using .into()?
161 Views Asked by Evan Carroll At
1
There are 1 best solutions below
Related Questions in RUST
- `ColumnNotFound("id")` when inserting with SQLx
- Polars with Rust: Out of Memory Error when Processing Large Dataset in Docker Using Streaming
- Why is a slice a DST?
- Unable to Retrieve External Public Address in libp2p Swarm Events
- Dynamic Nested Multi-Dimensional Arrays in Rust
- Generic property compare
- "(Reason: CORS header ‘Access-Control-Allow-Origin’ missing)" while trying to access Actix webserver from Wix site
- Is a directory (os error 21) when using rust to move a file
- Different types even though same value assigned
- How to pass a byte array to a WASM module from wasmer in Rust?
- Mutable borrow problem with inserting Vacant entry into HashMap
- Expected behavior while printing reference and dereference of a variable
- How to allocate a large structure in a heap baked `Arc<T>` without stack overflow in Rust?
- In Rust, how to inspect values captured by a closure?
- How to encrypt a string at compile-time and decrypt it at runtime in Rust, similar to constexpr encryption in c++?
Related Questions in TYPE-CONSTRUCTOR
- In Haskell, what does `Con Int` mean?
- Technical implementation of pattern matching vs. guards
- Point-free function to add 2 elements to the list / double application of (:) list data constructor and (.)
- In Scala 3, how to define unapply method to extract type argument in pattern matching?
- In Scala 3/Dotty, is it possible to write a kind/type constructor that takes a value with a unique path as an argument?
- Scala Higher Kinded Types for Traits and Method Parameters
- scala - Higher kinded type in trait member: _$1 takes no type parameters, expected: 1
- OCaml type constructors in C = <unknown constructor>
- T.into() vs Some(x) are there any detriments of using .into()?
- Why are all type bounds not used when inferring type constructors?
- Why is higher order unification in Scala considered partial?
- Analogy between `F[_ <: A] <: B` at type-level and `f: A => B` at value-level
- Difference in inference between [F <: List[A], A] and [F[_] <: List[A], A]
- Applying type to a type constructor in macro throws exception
- Difference between type constructors and parametrized type bounds in Scala
Related Questions in OPTION-TYPE
- Springboot: How to get an entity optional property and check null?
- Typescript Maybe, error about null not being covered
- Optional.ifPresent throws NPE when action is null AND optional not present
- Monad Map with two values in Java Functional Programming
- Runtime Issues with std::optional in GCC on M2 Mac
- Chain an "if let" with a boolean expression
- Show CSS in Option of Dropdownlist
- How to get subslice of Options instead of Option of subslice?
- Swift, Why are the memory sizes of 'String' and 'String?' the same?
- Optional and complete method
- Pure functional way of creating a std::optional counterpart
- Equivalent of "Optional" (maybe type) from Java in Powershell
- Is using a wrapper with a 'check' function a good approach to optional types rather than the traditional method?
- What is the best way to check if the value inside an option inside a result satisfies a condition in rust?
- Getopt::Long, Optional Arguments, and Greediness
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Codegen wise, there wouldn't be any downsides as the
.into()just wraps the value inSome()too. The only problem might be if LLVM wasn't inlining the call.In the code readability side though,
.into()is far less clear thanSome()..into()is highly generic. That means, you could end up having to add type annotations, which is more effort than just wrapping yourself. Even in the cases where you don't need to add annotations, it can become difficult for the reader what the type of the expression is.IMO,
.into()should be used where the exact type is not important and is only an implementation detail. The meaning of the type should not change. Going fromFoo::ColortoFoo::BetterForInternalUseColoris an implementation detail and does not change meaning. Going fromTtoOption<T>does.