---
title: LookupBuilder
summary: A builder-style API for configuring a non-transactional lookup.
url: https://www.fastly.com/documentation/reference/compute/sdks/rust/fastly/cache/core/struct.LookupBuilder/
---

**Kind:** Struct  
**Module:** [core](https://www.fastly.com/documentation/reference/compute/sdks/rust/fastly/cache/core/)  
**Package:** fastly 0.13.1  
**Source:** https://docs.rs/crate/fastly/0.13.1/source/src/cache/core.rs#119

```rust
pub struct LookupBuilder { /* private fields */ }
```

A builder-style API for configuring a non-transactional lookup.

## Methods

### always_use_requested_range

**Source:** https://docs.rs/crate/fastly/0.13.1/source/src/cache/core.rs#191

```rust
fn always_use_requested_range(self) -> Self
```

Respect the range in `to_stream_with_range` even when the body length is not yet known.

When a cache item is `Found`, the length of the cached item may or may not be known:
- the item may be fully cached;
- the item may be streaming in, but have a known length; or
- the item may be streaming in progressively, **without a known length**.

By default (legacy behavior), if a range is specified but the length is not known,
the contents of the entire item will be provided instead of the requested range.

`always_use_requested_range` indicates any cached item returned by this lookup should provide only the requested range,
regardless of whether the length is known. An invalid range will eventually return a read error, possibly after providing some data.

**NOTE:** In the future, the `always_use_requested_range` behavior will be the default, and this method will be removed.

**Parameters**

- `self`: `Self`

**Returns**

`Self`

### execute

**Source:** https://docs.rs/crate/fastly/0.13.1/source/src/cache/core.rs#200

```rust
fn execute(self) -> Result<Option<Found>, CacheError>
```

Perform the lookup, returning a [`Found`](https://www.fastly.com/documentation/reference/compute/sdks/rust/fastly/cache/core/struct.Found/) object if a usable cached item was found.

A cached item is _usable_ if its age is less than the sum of its max_age and its
stale-while-revalidate period. Items beyond that age are unusably stale.

**Parameters**

- `self`: `Self`

**Returns**

`Result<Option<Found>, CacheError>`

### header

**Source:** https://docs.rs/crate/fastly/0.13.1/source/src/cache/core.rs#178

```rust
fn header(self, name: impl ToHeaderName, value: impl ToHeaderValue) -> Self
```

Sets a single-value header for this lookup, discarding any previous values associated
with the header `name`.

**Note**: These headers are narrowly useful for implementing cache lookups
incorporating the semantics of the [HTTP `Vary`
header](https://www.rfc-editor.org/rfc/rfc9110#section-12.5.5), but the APIs in
this module are not suitable for HTTP caching out-of-the-box. Future SDK
releases will contain an HTTP Cache API.

The headers act as additional factors in object selection, and the choice of _which_
headers to factor in is determined during insertion, via e.g.
[`crate::cache::core::InsertBuilder::vary_by`](https://www.fastly.com/documentation/reference/compute/sdks/rust/fastly/cache/core/struct.InsertBuilder/#method-vary_by). A lookup will succeed when there is at least one
cached item that matches lookup's cache key, and all of the lookup's headers included in the cache
items' `vary_by` list match the corresponding headers in that cached item.

A [typical example](https://www.fastly.com/blog/best-practices-using-vary-header)
is a cached HTTP response, where the request had an `Accept-Encoding` header. In that case,
the origin server may or may not decide on a given encoding, and whether that same response is
suitable for a request with a different (or missing) `Accept-Encoding` header is determined
by whether `Accept-Encoding` is listed in `Vary` header in the origin's response.

**Parameters**

- `self`: `Self`
- `name`: `impl ToHeaderName`
- `value`: `impl ToHeaderValue`

**Returns**

`Self`

### header_values

**Source:** https://docs.rs/crate/fastly/0.13.1/source/src/cache/core.rs#162

```rust
fn header_values<'a>(self, name: impl ToHeaderName, values: impl IntoIterator<Item = &'a HeaderValue>) -> Self
```

Sets a multi-value header for this lookup, discarding any previous values associated
with the header `name`.

**Note**: These headers are narrowly useful for implementing cache lookups
incorporating the semantics of the [HTTP `Vary`
header](https://www.rfc-editor.org/rfc/rfc9110#section-12.5.5), but the APIs in
this module are not suitable for HTTP caching out-of-the-box. Future SDK
releases will contain an HTTP Cache API.

The headers act as additional factors in object selection, and the choice of _which_
headers to factor in is determined during insertion, via e.g.
[`crate::cache::core::InsertBuilder::vary_by`](https://www.fastly.com/documentation/reference/compute/sdks/rust/fastly/cache/core/struct.InsertBuilder/#method-vary_by). A lookup will succeed when there is at least one
cached item that matches lookup's cache key, and all of the lookup's headers included in the cache
items' `vary_by` list match the corresponding headers in that cached item.

A [typical example](https://www.fastly.com/blog/best-practices-using-vary-header)
is a cached HTTP response, where the request had an `Accept-Encoding` header. In that case,
the origin server may or may not decide on a given encoding, and whether that same response is
suitable for a request with a different (or missing) `Accept-Encoding` header is determined
by whether `Accept-Encoding` is listed in `Vary` header in the origin's response.

**Parameters**

- `self`: `Self`
- `name`: `impl ToHeaderName`
- `values`: `impl IntoIterator<Item = &'a HeaderValue>`

**Returns**

`Self`

### on_behalf_of

**Source:** https://docs.rs/crate/fastly/0.13.1/source/src/cache/core.rs#185

```rust
fn on_behalf_of(self, service: impl ToString) -> Self
```

Perform this lookup on behalf of another service, using its data store.

#### Internal / Privileged

This operation is privileged, and attempts to use this functionality without
proper privileges will cause errors. If you are interested in having two or
more of your services share the same cache, please talk to your Fastly account
representative. While we have no plans to offer this ability widely -- this
capability is only currently allowed for Fastly-internal services -- we may
revisit this decision given sufficient customer input.

**Parameters**

- `self`: `Self`
- `service`: `impl ToString`

**Returns**

`Self`

## Auto trait implementations

- `Freeze`
- `RefUnwindSafe`
- `Send`
- `Sync`
- `Unpin`
- `UnsafeUnpin`
- `UnwindSafe`

## Blanket implementations

- `Any`
- `Borrow<T>`
- `BorrowMut<T>`
- `Downcast`
- `DowncastSync`
- `ErasedDestructor`
- `From<T>`
- `Into<U>`
- `IntoEither`
- `Same`
- `TryFrom<U>`
- `TryInto<U>`
