Struct pass-by-value
          
              
          
              For immutable structs this is not relevant but when the struct is mutable you have to remember that it is passed by value to functions.
          
              That is, the function receives a copy of the external struct. Any changes made to the struct inside the function will be lost
          
              when you leave the function.
          
      
  
  
  
  
  
  
  
  
  
  
  
      examples/struct/struct_pass_by_value.cr
struct Person property name : String property email : String def initialize(@name, @email) end end def set_email(pers : Person) pers.email = "fake@address.com" p! pers end prs = Person.new("Foo", "me@foo.bar") p! prs p! prs.name p! prs.email puts "" set_email(prs) puts "" p! prs p! prs.name p! prs.email
prs # => Person(@name="Foo", @email="me@foo.bar") prs.name # => "Foo" prs.email # => "me@foo.bar" pers # => Person(@name="Foo", @email="fake@address.com") prs # => Person(@name="Foo", @email="me@foo.bar") prs.name # => "Foo" prs.email # => "me@foo.bar"