Skip to content

anatoliykmetyuk/deepcopy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Deep copy for mutable Scala structures.

Usage

Add the dependency to your your build.sbt:

libraryDependencies += "com.functortech" %% "deepcopy" % "0.1.0"

Then, use it as follows:

scala> import deepcopy._
import deepcopy._

scala> case class Author(var x: String)
defined class Author

scala> case class Book(authors: List[Author])
defined class Book

scala> val author = Author("foo")
author: Author = Author(foo)

scala> val book1 = Book(List(author))
book1: Book = Book(List(Author(foo)))

scala> val book2 = deepcopy(book1)
book2: Book = Book(List(Author(foo)))

scala> author.x = "bar"
author.x: String = bar

scala> book1
res1: Book = Book(List(Author(bar)))

scala> book2
res2: Book = Book(List(Author(foo)))

You can find more examples at the test suits.

Currently it deeply copies only Lists, Options and case classes. You can override the default copying logic. To do so, please have a look at the deepcopy.apply method (specifically its cs argument that specifies copiers). Use the default copiers defined under copiers.scala as a reference to implement your own copiers.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages