//! > Hover
//! > test_runner_name
test_hover
//! > cairo_project.toml
[crate_roots]
hello = "src"
[config.global]
edition = "2023_11"
//! > cairo_code
use Balance::contr<caret>act_state_for_testing;
/// The balance contract interface.
#[starknet::interface]
trait IBalance<T> {
/// Returns the current balance.
fn get(self: @T) -> u128;
/// Increases the balance by the given amount.
fn increase(ref self: T, a: u128);
}
/// The balance contract.
#[starknet::contract]
mod Balance {
use core::traits::Into;
#[storage]
struct Storage {
/// Storage value.
value: u128,
}
#[constructor]
fn constructor(ref se<caret>lf: Cont<caret>ractState, value_: u128) {
self.va<caret>lue.write(<caret>value_);
}
#[abi(embed_v0)]
impl Balance of super::IBa<caret>lance<Con<caret>tractState> {
fn get(self: @ContractState) -> u128 {
self.value.r<caret>ead()
}
fn increase(ref self: ContractState, a: u128) {
self.value.wr<caret>ite( self.value.read() + <caret>a );
}
}
}
//! > hover #0
// = source context
use Balance::contr<caret>act_state_for_testing;
// = highlight
use Balance::<sel>contract_state_for_testing</sel>;
// = popover
```cairo
hello
```
```cairo
pub fn contract_state_for_testing() -> ContractState
```
//! > hover #1
// = source context
fn constructor(ref se<caret>lf: ContractState, value_: u128) {
// = highlight
fn constructor(ref <sel>self</sel>: ContractState, value_: u128) {
// = popover
```cairo
hello::Balance
```
```cairo
fn constructor(ref self: ContractState, value_: u128)
```
//! > hover #2
// = source context
fn constructor(ref self: Cont<caret>ractState, value_: u128) {
// = highlight
fn constructor(ref self: <sel>ContractState</sel>, value_: u128) {
// = popover
```cairo
hello
```
```cairo
pub struct ContractState {}
```
//! > hover #3
// = source context
self.va<caret>lue.write(value_);
// = highlight
self.<sel>value</sel>.write(value_);
// = popover
```cairo
hello
```
```cairo
#[derive(Drop, Copy)]
#[doc(hidden)]
pub struct StorageStorageBaseMut {
pub value: starknet::storage::StorageBase<starknet::storage::Mutable<u128>>,
}
```
//! > hover #4
// = source context
self.value.write(<caret>value_);
// = highlight
self.value.write(<sel>value_</sel>);
// = popover
```cairo
value_: core::integer::u128
```
//! > hover #5
// = source context
impl Balance of super::IBa<caret>lance<ContractState> {
// = highlight
impl Balance of super::<sel>IBalance</sel><ContractState> {
// = popover
```cairo
hello
```
```cairo
trait IBalance<T>
```
---
The balance contract interface.
//! > hover #6
// = source context
impl Balance of super::IBalance<Con<caret>tractState> {
// = highlight
impl Balance of super::IBalance<<sel>ContractState</sel>> {
// = popover
```cairo
hello
```
```cairo
pub struct ContractState {}
```
//! > hover #7
// = source context
self.value.r<caret>ead()
// = highlight
self.value.<sel>read</sel>()
// = popover
```cairo
core::starknet::storage::StoragePointerReadAccess
```
```cairo
pub trait StoragePointerReadAccess<T>
fn read(self: @T) -> Self::Value
```
//! > hover #8
// = source context
self.value.wr<caret>ite( self.value.read() + a );
// = highlight
self.value.<sel>write</sel>( self.value.read() + a );
// = popover
```cairo
core::starknet::storage::StoragePointerWriteAccess
```
```cairo
pub trait StoragePointerWriteAccess<T>
fn write(self: T, value: Self::Value)
```
//! > hover #9
// = source context
self.value.write( self.value.read() + <caret>a );
// = highlight
self.value.write( self.value.read() + <sel>a</sel> );
// = popover
```cairo
a: core::integer::u128
```