Struct fbinit::FacebookInit

source ·
pub struct FacebookInit { /* private fields */ }
Expand description

This type is a token that allows code to prove initFacebook has been called. A function can require this proof by taking _fb: FacebookInit as an argument.

The basic assumption of initFacebook is that it happens at the very beginning of main before there are additional threads. It must be allowed to modify process-global state like env vars or gflags without the risk of undefined behavior from other code concurrently reading those things.

The preferred way to obtain a proof token is through a pair of attribute macros exported by this crate. #\[fbinit::main\] is placed on your main function and will call initFacebook and provide the resulting proof:

#[fbinit::main]
fn main(fb: fbinit::FacebookInit) {
    /* ... */
}

The proof argument is optional. If you don’t need it, this is fine too:

#[fbinit::main]
fn main() {
    /* ... */
}

If main is async, the attribute behaves like `#[tokio::main].

#[fbinit::main]
async fn main(fb: fbinit::FacebookInit) {
    yay().await;
}

async fn yay() {}

There is also #\[fbinit::test\] which behaves like #\[test\] or #\[tokio::test\].

#[fbinit::test]
fn test_my_service(fb: fbinit::FacebookInit) {
    /* ... */
}

#[fbinit::test]
async fn async_test(fb: fbinit::FacebookInit) {
    /* ... */
}

Trait Implementations§

source§

impl Arbitrary for FacebookInit

source§

fn arbitrary(_: &mut Gen) -> Self

Return an arbitrary value. Read more
source§

fn shrink(&self) -> Box<dyn Iterator<Item = Self>>

Return an iterator of values that are smaller than itself. Read more
source§

impl Clone for FacebookInit

source§

fn clone(&self) -> FacebookInit

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for FacebookInit

source§

fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Copy for FacebookInit

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.