File tree Expand file tree Collapse file tree 1 file changed +13
-4
lines changed Expand file tree Collapse file tree 1 file changed +13
-4
lines changed Original file line number Diff line number Diff line change @@ -64,9 +64,10 @@ defprotocol Inspect do
6464
6565    * `:except` - remove the given fields when inspecting. 
6666
67-     * `:optional` - (since v1.14.0) do not include a field if it 
68-       matches its default value. This can be used to simplify the 
69-       struct representation at the cost of hiding information. 
67+     * `:optional` - (since v1.14.0) a list of fields that should not be 
68+       included when they match their default value. This can be used to 
69+       simplify the struct representation at the cost of hiding 
70+       information. 
7071
7172  Whenever `:only` or `:except` are used to restrict fields, 
7273  the struct will be printed using the `#User<...>` notation, 
@@ -82,7 +83,15 @@ defprotocol Inspect do
8283      #=> #User<id: 1, name: "Jane", ...> 
8384
8485  If you use only the `:optional` option, the struct will still be 
85-   printed as `%User{...}`. 
86+   printed as a valid struct. 
87+ 
88+       defmodule Point do 
89+         @derive {Inspect, optional: [:z]} 
90+         defstruct [x: 0, y: 0, z: 0] 
91+       end 
92+ 
93+       inspect(%Point{x: 1}) 
94+       %Point{x: 1, y: 0} 
8695
8796  ## Custom implementation 
8897
 
 
   
 
     
   
   
          
    
    
     
    
      
     
     
    You can’t perform that action at this time.
  
 
    
  
    
      
        
     
       
      
     
   
 
    
    
  
 
  
 
     
    
0 commit comments