Box 0

Swift µframework of the ubiquitous Box<T> & MutableBox<T> reference types, for recursive value types & misc. other purposes.

2 years after MIT

Box

This is a Swift microframework which implements Box<T> & MutableBox<T>, with implementations of ==/!= where T: Equatable.

Box is typically used to work around limitations of value types:

  • recursive structs/enums
  • type-parameterized enums where more than one case has a value

Use

Wrapping & unwrapping a Box:

// Wrap:
let box = Box(1)

// Unwrap:
let value = box.value

Changing the value of a MutableBox:

// Mutation:
let mutableBox = MutableBox(1)
mutableBox.value = 2

Building a recursive value type:

struct BinaryTree {
    let value: Int
    let left: Box<BinaryTree>?
    let right: Box<BinaryTree>?
}

Building a parameterized enum:

enum Result<T> {
    case Success(Box<T>)
    case Failure(NSError)
}

See the sources for more details.

Integration

  1. Add this repo as a submodule in e.g. External/Box:

    git submodule add https://github.com/robrix/Box.git External/Box
  2. Drag Box.xcodeproj into your .xcworkspace/.xcodeproj.
  3. Add Box.framework to your target’s Link Binary With Libraries build phase.
  4. You may also want to add a Copy Files phase which copies Box.framework (and any other framework dependencies you need) into your bundle’s Frameworks directory. If your target is a framework, you may instead want the client app to include Box.framework.

Related Repositories

scotch-box

scotch-box

Scotch Box is a preconfigured Vagrant Box with a full array of LAMP Stack featur ...

box-linux-sync

box-linux-sync

Linux client for Box.com ...

box-python-sdk

box-python-sdk

Box SDK for Python ...

box-java-sdk

box-java-sdk

The Box SDK for Java. ...

ember-select-box

ember-select-box

:capital_abcd: A faux select box for Ember apps ...


Top Contributors

robrix gfontenot JaSpa alexfish argon jspahrsummers kennytm

Releases

-   2.0 zip tar
-   1.2.2 zip tar
-   1.2.1 zip tar
-   1.2.0 zip tar
-   1.1.0 zip tar
-   1.0.1 zip tar
-   1.0 zip tar