<!--
{
  "availability" : [

  ],
  "documentType" : "symbol",
  "framework" : "Tor",
  "identifier" : "/documentation/Tor/TorClient/init(configuration:)",
  "metadataVersion" : "0.1.0",
  "role" : "Initializer",
  "symbol" : {
    "kind" : "Initializer",
    "modules" : [
      "Tor"
    ],
    "preciseIdentifier" : "s:3Tor0A6ClientC13configurationAcA0A13ConfigurationV_tcfc"
  },
  "title" : "init(configuration:)"
}
-->

# init(configuration:)

Create a client bound to a specific [`TorConfiguration`](/documentation/Tor/TorConfiguration).

```
init(configuration: TorConfiguration)
```

## Parameters

`configuration`

The configuration snapshot to use.
See [`ephemeral(cacheDirectory:)`](/documentation/Tor/TorConfiguration/ephemeral(cacheDirectory:)) for a
zero-residue default or [`init(dataDirectory:cacheDirectory:socksPort:cookieAuthentication:controlPassword:extraArgs:ownsDataDirectory:)`](/documentation/Tor/TorConfiguration/init(dataDirectory:cacheDirectory:socksPort:cookieAuthentication:controlPassword:extraArgs:ownsDataDirectory:))
for a fully-specified configuration.

## Discussion

No work is performed at construction — the Tor process is not
launched until [`start()`](/documentation/Tor/TorClient/start()) is called. Keep construction cheap so
dependency-injection frameworks can wire a `TorClient` without
paying a startup cost.

> Note: The configuration is copied by value into ``doc://Tor/documentation/Tor/TorClient/configuration``;
> the caller’s original struct is unaffected by later mutations
> to this actor.