The libraries in Solidity are just like contracts, but they are deployed only once and their code is reused in the calling contracts. You can define libraries using the library keyword. Calls to the library functions use the DELEGATECALL opcode, which means that when a function on a library is called by the contract, only the code of the library function is executed in the context of the calling contract, and the storage of the calling contract is used and modified by the library. The library can have pure and view functions, which will be accessible directly from the calling contract because they do not initiate DELEGATECALL. You cannot destroy a deployed library.
When a library is linked to a contract, you can see that library as the implicit base contract of the contract and can access the functions defined in the library just by...